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
https://literarymachin.es/opendata-anagrafe-biblioteche/
literarymachin.es
crawl=CC-MAIN-2021-31
12705
application/http; msgtype=response
sha1:7HFI6BM45XFVAD4B7GCSMLPNK3PDZUF4
<urn:uuid:7c87300f-ed18-4abd-8cfe-53a850b9ed1c>
2021-08-06T04:18:13Z
95.85.24.123
text/html
sha1:6GANFXX6HINULRCHXSKQ5FCIADIEDGB3
<urn:uuid:40838925-ad0d-4648-965b-b1d7f4d8bea4>
https://literarymachin.es/opendata-anagrafe-biblioteche/
response
<urn:uuid:ea54448a-e8b8-4e98-ac4a-c665c839f98f>
isPartOf: CC-MAIN-2021-31
publisher: Common Crawl
description: Wide crawl of the web for July/August 2021
operator: Common Crawl Admin (info@commoncrawl.org)
hostname: ip-10-67-67-139.ec2.internal
software: Apache Nutch 1.18 (modified, https://github.com/commoncrawl/nutch/)
robots: checked via crawler-commons 1.2-SNAPSHOT (https://github.com/crawler-commons/crawler-commons)
format: WARC File Format 1.1
conformsTo: https://iipc.github.io/warc-specifications/specifications/warc-format/warc-1.1/