digital libraries,
web preservation,
books,
archives.

Opendata dell'Anagrafe Biblioteche

2014-09-22 tags: libraries api web geodata opendata

Come usare gli opendata dell'Anagrafe delle Biblioteche Italiane e disegnare su una mappa web gli indirizzi delle biblioteche.

Un file CSV con i dati anagrafici e territoriali è scaricabile dalla pagina opendata del sito. Sono presenti altri dataset che possono essere usati per integrare la descrizione di una determinata biblioteca, in questo esempio mi limito ai dati generali e alle coordinate geografiche. Il contenuto del csv può essere facilmente importato in un database relazionale e da lì si possono estrarne i dati di interesse.

textql è un tool estremamente utile che permette di eseguire delle query sql direttamente sul csv (in realtà dietro le quinte textql non fa altro che caricare i dati in un database sqlite temporaneo).

Con questo unico comando shell posso estrarre tutte le righe dal csv in cui il field comune=Bologna e salvare l'output risultante in un nuovo file csv.

$ textql -source territorio.csv -header -dlm=";" -lazy-quotes -output-header -sql='SELECT __codice_isil_ AS ISIL, denominazione, indirizzo, telefono, email, url, REPLACE(latitudine,",",".") AS latitudine, REPLACE(longitudine,",",".") AS longitudine FROM tbl WHERE comune="Bologna" AND (latitudine !="" AND latitudine !="0") and (longitudine !="" AND latitudine !="0")' > bologna.csv

La query sql (di seguito più leggibile) scarta anche i campi in cui le coordinate sono vuote (o riportano 0,0) e sostuisce il separatore decimale delle coordinate da , a .

SELECT
\__codice_isil_ AS ISIL, denominazione, indirizzo, telefono, email, url,
REPLACE(latitudine,",",".") AS latitudine,
REPLACE(longitudine,",",".") AS longitudine
FROM
tbl
WHERE
comune="Bologna"
AND
(latitudine !="" AND latitudine !="0")
AND
(longitudine !="" AND latitudine !="0")
;

Convertiamo il csv risultato in formato GeoJSON usando il tool csvjson dalla suite csvkit:

$ csvjson -d";" --lat latitudine --lon longitudine bologna.csv | jq . > bologna.geojson

A questo punto il file geojson può essere usato con una qualsiasi libreria per la visualizzazione di mappe (esempio Leaflet) oppure per una visualizzazione immediata può essere caricato in un gist

$ gist bologna.geojson
https://gist.github.com/9d4ed56efcf4f9fc2c61

il gist è subito visualizzabile e riporta una mappa navigabile (su un layer mapbox) con i punti delle nostre biblioteche (nell'esempio quelle del comune di Bologna): https://gist.github.com/9d4ed56efcf4f9fc2c61