Dades obertes


En aquest apartat trobarem què són les dades obertes, com podem accedir-hi i què en podem fer des d'App Inventor.



Més concretament es pretén donar resposta a les preguntes següents:


  • Què són les dades obertes? On podem trobar-ne?
  • Podem accedir a dades obertes des d'App Inventor?
  • Què és un fitxer JSON?


El concepte Dades Obertes (Open Data en anglès) inclou aquells conjunts de dades que les administracions posen a disposició del públic i poden ser reutilitzats i tornats a publicar sense cap restricció.

Les diferents administracions tenen un catàleg de dades obertes al servei de la ciutadania:


Un exemple concret

El govern de Navarra té un conjunt de dades obertes que, de moment, no ofereix la Generalitat de Catalunya, que és un llistat setmanal de totes les farmàcies de guàrdia a la comunitat foral de Navarra.

L'exemple que farem és el d'una app on, a partir d'una població de Navarra, mostri el llistat de les farmàcies que hi ha de guàrdia en el moment de fer la consulta i, en triar-ne una, mostri la seva posició en un mapa.

Aquestes dades les podem trobar aquí: Farmàcies de guàrdia de Navarra.

Dels diferents formats de fitxer disponibles, el format més convenient per accedir a dades (sobretot quan hi ha dades anidades) és el format JSON. L'accés als valors de cada propietat es fa mitjançant el nom de la propietat. D'aquesta forma, es pot accedir als valors sense tenir en compte quina és l'ordenació de les propietats dins del fitxer.

L'enllaç que haurem de fer servir és aquest:

http://www.navarra.es/appsext/DescargarFichero/default.aspx?codigoAcceso=OpenData&fichero=GuardiasFarmacias/Guardias.json

Per poder accedir a aquest fitxer des d'App Inventor cal utilitzar el component Web, on li haurem de dir quina és la URL i després fer una crida al Get.

Així doncs, posarem un botó a la nostra app que faci la crida al component web amb la URL que hem indicat abans. Tot seguit caldrà dir-li què volem que faci when Web GotText.


Mostrar el resultat

Utilitzem la funció que proporciona App Inventor per convertir aquest JSON en una llista, on cada element conté una llista de parelles propietat-valor:

Això ens deixa en la mateixa situació que quan treballem amb fulls de càlcul en documents de Google Sheets. Tenim les dades en una llista, i per tant ja sabem posar-les en un ListPicker:

Si volem, però, afegir només els registres corresponents a una població concreta, podem posar el condicional abans d'afegir els registres al ListPicker de la següent forma:

Els noms de les propietats cal verificar-los visualitzant el fitxer JSON. Podeu fer-ho amb el navegador Firefox (que mostra les dades de forma estructurada) o bé amb una eina online com https://jsonformatter.org/.


I ara el mapa

Per mostrar aquesta informació en un mapa cal fer-ho tal i com ho hem fet fins ara. Només cal tenir en compte que la informació la tenim en dues propietats i no oblidar de definir l'acció de l'ActivityStarter:


Fitxers JSON amb dades anidades

L'estructura del fitxer JSON que hem vist en l'exemple anterior és senzilla (només inclou una llista, on cada element conté diverses propietats). En general, l'estructura de les dades pot ser més complexa, amb dades que es troben en diferents nivells d'anidament.

Fixeu-vos en el fitxer de dades de Masies de la Diputació de Barcelona: https://do.diba.cat/api/dataset/masies

Com a exemple, il·lustrem com obtenir l'adreça completa de la masia destacada en blau.

Observem que el fitxer JSON inclou una llista anomenada elements, on cada element correspon a una masia. Ens fixem en el quart element d'aquesta llista de masies (el primer element és el 0).

Cada masia té una propietat anomenada grup_adreca, que inclou la propietat que ens interessa (adreca_completa):