Dades obertes amb Snapi!

From Edutec Wiki
Jump to: navigation, search

Dades obertes

Què són ?

Cada vegada més les institucions públiques, algunes privades i fins i tot particulars, posen a disposició pública les dades de les què disposen. En funció de cada cas, és possible accedir a totes o només a una part. Pel que fa a les institucions públiques hi ha uns requeriments legals de transparència que ajuden a fer que les dades siguin públiques. En quan a les privades, és més un tema de responsabilitat social i també d’interès per veure quins usos se’n poden fer d'aquestes.

Que les dades siguin obertes no vol dir necessàriament que siguin útils ni usables. És important que les dades s’actualitzin de manera paral·lela a la seva generació. Igual d’important és que l'estructura i les descripcions, les unitats i els formats que se li donen a aquestes dades, faciliti el seu ús per tothom. També s’ha de preveure que les dades siguin significatives per poder trobar un ús interessant d'aquestes. El món de les dades obertes ofereix moltes possibilitats per treballar diversos àmbits de coneixement i diferents matèries.

      Dades0.png


Com accedir-hi?

L'accés a les dades obertes es fa de dues formes:

  • La primera i la més tradicional és una pàgina web en la qual es pot fer una consulta. Depenent de com estigui implementat, es poden fer diverses cerques amb aquestes dades o simplement rebre un llistat (dataset) de la informació. En general a més possibilitats d'estriar les dades en origen millor.
  • La segona és a través d'una API (Interfície de Programació d'Aplicacions). Es tracta d’una sèrie d'indicacions que permeten compartir la informació i els procediments per part d’un altre programa informàtic. En aquest cas, indicacions de com accedir a les dades obertes ubicades en un servidor. La majoria dels servidors proporcionen una API REST, que vol dir que es fa amb una petició semblant a la d'una pàgina web.

Exemple: Obtenir la geolocalització del Citilab amb els mapes de Google

Aquest darrer mètode no és necessàriament millor, tot depèn com estigui implementat, però permet accedir a les dades amb una aplicació dissenyada segons a les nostres necessitats. L'accés a les APIs i la creació d’aquestes aplicacions, ha estat reservat tradicionalment als programadors informàtics, però cada vegada més hi ha iniciatives que pretenen fer més accessible aquesta funcionalitat. És el cas de l’Snapi!.

Snapi!

Què és?

Snapi! neix amb la idea de simplificar l’ús de les APIs de dades obertes que comencen a estar a disposició de tots els ciutadans. Es tracta d’una eina oberta que permet crear, d’una forma gràfica i intuïtiva, prototips d’aplicacions amb diferents APIs, com ara les del projecte europeu iCity o amb les dades obertes que l’AMB ofereix als ciutadans. Snapi! ha estat desenvolupada per l’equip Edutec del Citilab i és una modificació del projecte Snap! de Berkeley.

Per conèixer Snap! es pot consultar el material disponible en aquesta wiki.


Exemple d'API

Començarem amb un exemple d’ús amb una API molt senzilla per veure com treballar amb Snapi!: "Genderize.io".

 

"Genderize.io" és una API que, donat un nom de pila i, opcionalment, un país d’origen o un idioma, retorna la probabilitat que aquest nom sigui masculí o femení. Es pot fer servir per exemple per modificar l’aparença d’un joc en funció del nom o extreure automàticament el gènere d’un llistat de noms. Tot seguit descriurem el procés de funcionament de la API anomenada:

 

  • El camí llarg

Començarem pel camí llarg però general per qualsevol API. El primer que hem de fer és mirar la documentació disponible per al servei que es farà servir. En aquest cas la troben a https://genderize.io/. El format de la petició simple és el següent:

GEThttps://api.genderize.io/?name=joan

 

A la categoria “API” (de color verd oliva) troben tants blocs per accedir a les API com per tractar les dades que aquestes retornen. El bloc que correspon a aquesta crida és el següent:

 RTENOTITLE

 

La crida és https i per tant haurem d’ajustar així la segona llista del bloc . El paràmetre és un camp anomenat “name” amb valor “joan”. Per aquest tipus de dades hem de fer servir el bloc, de la mateixa categoria que associa un nom amb un valor:

 RTENOTITLE

 

El resultat final és el següent:

 RTENOTITLE

 

Si premem sobre el bloc Snapi! fa la petició al servidor i aquest retorna la informació demanada:

 RTENOTITLE

 

Si es prova directament amb un navegador web amb https://api.genderize.io/?name=joan també es rep la mateixa resposta. Aquesta està en format JSON (acrònim de JavaScript Object Notation) utilitzat al llenguatge de programació JavaScript per definir les estructures de dades i habitualment com format d’intercanvi de dades.

 

En aquest cas es pot entendre amb facilitat:

  {"name":"joan","gender":"female","probability":0.82,"count":1017}

 

El nom consultat és Joan, el gènere és femení amb una probabilitat del 82% per una mostra de 1017 elements. Pot sorprendre que Joan sigui un nom majoritàriament femení, però hem de tenir en compte que es tracta d’una estadística a un nivell global i als països anglosaxons Joan és femení. Si volem afinar a la documentació de l'API indica com incloure el paràmetre de país o llenguatge. Així amb la següent petició podem preguntar per al gènere de Joan en català:

GET https://api.genderize.io/?name=joan&language_id=ca

RTENOTITLE

 

La nova resposta és la següent:

{"name":"joan","gender":"male","probability":1,"count":49}

 

Ara el gènere el masculí amb un 100% de probabilitat. Podem fer servir una viualizació més entenedora amb l'inspector de JSON  fent servir el botó dret del ratolí: només cal premer amb el botó dret del ratolí per accedir a la definició dels blocs:

RTENOTITLE

RTENOTITLE

 

L'API de Genderize.io no té més opcions i per tant el treball d’adaptació ja estaria fet. Cada API té els seus mecanismes de connexió http o https, directe o a través d’un proxy (servidor intermediari) i amb paràmetres directes o a la capçalera. Snapi! disposa de 4 tipus de blocs bàsics per cobrir aquest requeriments:

RTENOTITLE

Amb una mica d’experimentació i amb l’ajuda dels adaptacions ja fetes, no és complicat realitzar la adaptació.

 

  • El camí curt

Snapi! ja inclou algunes adaptacions incorporades i és la via preferible per fer-ho servir. Aprofitant les facilitats per construir nous blocs heretats del Snap!, és possible generar un conjunt de blocs que facilitin l’ús de l’API. Només cal anar al menú Arxiu per importar els blocs dels APIs incorporats:

RTENOTITLE

Si escollim per exemple Genderize.io s’afegeixen els següents blocs a la categoria API:

RTENOTITLE

Ara disposem de blocs que permet treballar amb aquesta API de forma senzilla. Per exemple es pot fer un programa senzill que faci una salutació diferent en funció del nom introduït.

RTENOTITLE

El bloc clau és el que retorna cert si el nom és femení i fals si és masculí. Ara que hem fet el camí llarg és fàcil entendre com està construït aquest bloc. Com veurem després aquest bloc fa servir el bloc “gènere de …”. Només cal picar amb el botó dret del ratolí per accedir a la definició dels blocs:

RTENOTITLE

Exactament el que havíem fet anteriorment. En realitat del resultat només ens interessa la informació del gènere, que es pot extreure amb el bloc “ ... de ...“.

RTENOTITLE

S’ha de respectar el nom original dels camps, en aquest cas “gender” en anglès. El resultat d’aquesta petició, retorna female o male en funció del gènere del nom. Finalment només queda comparar i retornar cert o fals:

RTENOTITLE

Com veiem es poden definir diferents nivells d’abstracció per adequar-ho a les necessitats que tinguen. I a la vegada es pot aprofundir al nivell més baix per tenir una visió més completa del procés.


APIs destacades que conté Snapi!

Com hem vist es pot treballar a diferents nivells de complexitat amb l’Snapi!. Des d'un funcionament proper a les peticions que s’expliquen a la documentació de l’API, fins a un conjunt de blocs que ens permetin treballar sense haver d'explicar totes les qüestions tècniques. L’Snapi! inclou una sèrie d’APIs predefinits que es poden fer servir directament i que són els recomanats per començar a treballar amb el món de les APIs.

De les APIs que incorpora Snapi! en destaquem les següents:

Genderize.io

Ideal per començar i introduir els conceptes bàsics de l'Open Data i les APIs, per la seva simplicitat. Els exemples wizard i wizard ens il·lustren com fer servir aquesta API.

La referència de l’API es pot consultar a:https://genderize.io/

AMB Barcelona Open Data

Dades obertes de l’àrea metropolitana amb informació dels municipis, activitats, sensors, recursos hídrics, informació de les platges, etc.. L’exemple “meduses” es va utilitzar per treballar l’estat de les platges a l’estiu, “barcelona-population-density” dibuixa un mapa de les poblacions de l’AMB amb diferents colors per visualitzar la densitat de població i “barcelona-water-map” mostra al mapa els diferents recursos hídrics de l’AMB. La informació de referència es pot trobar a http://opendata.amb.cat/help.html

Jeopardy

API del concurs de preguntes i respostes de la televisió americana. Retorna una dels milers de preguntes categoritzades i les seves respostes de tots els anys d’emissió del programa. <meta charset="utf-8"></meta>A l’exemple “Jeopady” es mostra com construir un joc de preguntes i respostes gairebé infinit.


Mapes i geolocalització

L’Snapi! també inclou la possibilitat de visualitzar mapes i posicionar elements geolocalitzats en aquests. Per exemple, si tenim les coordenades d'un conjunt de les parades del bus, és possible posar un marcador a la seva localització al mapa, amb la possibilitat d'especificar un missatge que s’executa  quan es prem amb el ratolí.


Per començar s’ha de mostrar el mapa. Els blocs es troben a la categoria “Mapes” de color vermell terra.

mostra mapa

L’escenari de Snapi! es converteix en un mapa centrat al Citilab. Sobre aquest mapa es poden afegir marcadors:

Afegir marcadors

Es pot escollir el color, la forma com s’especifiquen les coordenades i la etiqueta que es mostrarà al picar sobre el punt dibuixat.
Per exemple si utilitzen l’API de AMB Barcelona Open Data, podem fer servir les coordenades del camp “localitzacio” per afegir punts de color verd al mapa amb el “nom” del municipi a l’etiqueta:

Exemple afegir marcadors
La resta de blocs de la categoria mapa permeten canviar el centre del mapa, el nivell de zoom, el tipus de mapa, obtenir les coordenades d’un punt de la pantalla i al contrari.
A continuació es descriuen un parell d’activitats una a un nivell introductori i l’altre a un nivell més avançat.


Exemples d'aplicació

Amb l'accés a les APIs es poden treballar diverses matèries d’una forma conjunta. Si mirem per exemple l’exemple “barcelona-population-density”, a banda de treballar la programació i l’accés a les APIs, es poden treballar el concepte de matemàtiques o medi natural i social.



Donar la benvinguda en funció del gènere de l’usuari

Previ a aquest taller es conèix el funcionament bàsic de Scratch o encara millor Snap!. Amb estructures bàsiques, condicionals i ús dels blocs de pregunta, resposta és suficient.

L’activitat comença amb una breu introducció a les dades obertes i al món de les APIs. Una bona forma és fent servir inicialment peticions amb el navegador i veure la resposta, per exemple les següents:

http://maps.googleapis.com/maps/api/geocode/json?address=citilab

https://api.nasa.gov/index.html#getting-started

http://opendata.amb.cat/municipis/search

El següent pas és fer una introducció a l’Snapi!, centrat en l’exemple d’aplicació l’API del Genderize. La seqüència és la següent:

  1. Importar els blocs de la API de Genderize
  2. Prova amb el bloc  bloc de gènere
  3. Comentar les dades retornades amb l’inspector
  4. Treballar Exemple de Joan, amb idioma i país

A continuació es tracta de llençar el repte de construir un programa que pregunti el nom i doni una benvinguda diferent en funció del gènere. Es poden col·locar els blocs necessaris i deixar temps per que arribin a la solució amb el suport necessari.

Enunciat Solució
Enunciat Genderize RTENOTITLE

La última part del taller es pot utilitzar per millorar aquest exercici (es pot mostrar l’exemple del mag “wizard”), per trobar noves idees d’aplicació d’aquesta API o per mostrar exemples d’altres APIs.



Pintar tots els municipis de l’àrea metroplitana de Barcelona

Per seguir aquest exemple s’han de conèixer els conceptes bàsics de Snapi.Es recomana fer l’exemple de l’API del Genderize.

 

  1. La seqüència per al taller és la següent:
  2. Obrir Snapi http:/snapi.citilab.eu i importar els blocs de l'AMB Barcelona OpenData.
  3. Fer servir el bloc del llistat de municipis. Amb el botó dret escollir “Inspeccionar JSON” per obrir l’inspector de dades.
  4. Agafar una mica més de pràctica amb l’inspector:
    RTENOTITLE
  5. Explicació del concepte de localitazció, longitud i latitud. Indetificar-ho amb el GPS.
  6. Explicar el bloc “per cada”.
    El repte és pintar en el mapa la llista de municipis del AMB amb el seu nom (o altre informació com extensió, població…) com etiqueta.
    RTENOTITLE
  7. Pintar municipis amb el seu nom:
    RTENOTITLE