Opendata dell'Anagrafe Biblioteche

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