You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[](https://forum.italia.it/c/dati)
4
7
[](https://forum.italia.it/t/call-for-ideas-confini-amministrativi-istat/12224)
5
8
6
-
Collezione di utilities per facilitare il riuso dei dati [ISTAT](https://www.istat.it/it/archivio/222527) e [ANPR](https://www.anpr.interno.it/) sui confini amministrativi italiani (versione generalizzata).
9
+
[](https://www.istat.it)
10
+
[](https://www.istat.it)
11
+
[](https://schema.gov.it)
12
+
13
+
Collezione di dati e utilities per facilitare il riuso dei dati [ISTAT](https://www.istat.it/it/archivio/222527) e [ANPR](https://www.anpr.interno.it/) sui confini amministrativi italiani (versione generalizzata meno dettagliata).
14
+
7
15
Per approfondimenti e discussione è aperto un [thread dedicato su Forum Italia](https://forum.italia.it/t/call-for-ideas-confini-amministrativi-istat/12224).
Nel file `sources.json` ci sono i link a tutti gli shapefile rilasciati da ISTAT dal 2001 elencati in [questa tabella](https://www.istat.it/it/archivio/222527), il link all'[archivio dei comuni di ANPR](https://www.anpr.interno.it/portale/anpr-archivio-comuni.csv) e le risorse Linked Open Data del [progetto OntoPiA](https://www.agid.gov.it/it/dati/vocabolari-controllati).
21
+
Nel file `sources.json` ci sono i link a tutti gli shapefile rilasciati da ISTAT dal 1991 elencati in [questa tabella](https://www.istat.it/it/archivio/222527), il link all'[archivio storico dei comuni di ANPR](https://www.anpr.interno.it/portale/anpr-archivio-comuni.csv) e le risorse Linked Open Data del [progetto OntoPiA](https://schema.gov.it/).
12
22
13
23
Lo script `main.py` scarica gli archivi zip dal sito ISTAT, li decomprime e li elabora in cartelle nominate con la data di rilascio: `dist/api/v2/it/YYYYMMDD/`. Scarica anche il file di ANPR e lo arricchisce con i dati ISTAT contenuti negli shapefile.
14
24
15
25
Al momento sono supportati i seguenti formati di output:
16
26
17
27
*[ESRI shapefile (ZIP)](https://it.wikipedia.org/wiki/Shapefile), il formato originario in cui l'ISTAT pubblica i dati ufficiali, ma con le geometrie corrette, la normalizzazione del charset a UTF-8 e la proiezione a [EPSG:4326](https://epsg.io/?q=4326).
18
-
*[Comma-separated values (CSV)](https://it.wikipedia.org/wiki/Comma-separated_values) con la tabella dei dati arricchiti dei territori (UTF-8, virgola come separato, doppie virgolette come delimintatori di stringa, new line come separatore di riga)
28
+
*[Comma-separated values (CSV)](https://it.wikipedia.org/wiki/Comma-separated_values) con la tabella dei dati arricchiti dei territori (UTF-8, virgola come separatore, doppie virgolette come delimitatori di stringa, new line come separatore di riga)
19
29
*[JavaScript Object Notation (JSON)](https://it.wikipedia.org/wiki/JavaScript_Object_Notation) con gli stessi dati del CSV
20
30
*[GeoJSON](https://it.wikipedia.org/wiki/GeoJSON) con gli stessi dati dello shapefile
21
31
*[TopoJSON](https://it.wikipedia.org/wiki/GeoJSON#TopoJSON) con gli stessi dati dello shapefile
22
32
*[GeoPackage](https://en.wikipedia.org/wiki/GeoPackage) con gli stessi dati dello shapefile
23
33
*[GeoParquet](https://geoparquet.org/) con gli stessi dati dello shapefile
24
34
*[Geobuf](https://github.com/cubao/geobuf-cpp) con gli stessi dati dello shapefile
35
+
*[SVG](https://developer.mozilla.org/en-US/docs/Web/SVG) con i contorni in grafica vettoriale dello shapefile (linee nere e bianche, sfondo trasparente)
36
+
*[PNG](https://en.wikipedia.org/wiki/PNG) con i contorni in grafica raster dello shapefile (linee nere e bianche, sfondo trasparente)
37
+
*[WEBP](https://en.wikipedia.org/wiki/WebP) con i contorni in grafica raster dello shapefile (linee nere e bianche, sfondo trasparente)
38
+
*[JPEG](https://en.wikipedia.org/wiki/JPEG) con i contorni in grafica raster dello shapefile (linee nere su sfondo bianco e bianche su sfondo nero)
25
39
26
40
Il file di ANPR è quello originale arricchito delle denominazioni e dell'indicazione degli shapefile in cui i comuni sono presenti.
27
41
28
42
> Avvertenza: nel repository è incluso solo il codice sorgente dell'applicazione e non i file generati.
29
43
30
-
## Design e stack tecnologici
44
+
## Design e stack tecnologico
31
45
32
46
L'obiettivo di questo progetto è automatizzare completamente la generazione di risorse geografiche italiane utili in diversi ambiti di mapping e GIS a partire dai dati storici ufficiali rilasciati da ISTAT e ANPR. I task includono il download, l'omogeneizzazione di codifiche e formati, la correzione di errori di geometrie, la generazione di raggruppamenti di territori a tutti i livelli (es. i comuni di una regione), la conversione in diversi formati geografici e la generazione di mappe interattive per una fruizione semplificata di ognuno di essi.
33
47
34
-
La struttura dell'albero di cartelle di output è conforme allo standard [REST delle Web API](https://en.wikipedia.org/wiki/REST), per cui il risultato finale è effettivamente una API statica, descritta mediante lo [standard OpenAPI](./dist/api/v2/openapi.v2.yml). Tutte le risorse disponibili sono automaticamente raggiungibili grazie alla presenza di file `index.json` in ogni cartella conformi alla specifica [Hypertext Application Language (HAL)](https://en.wikipedia.org/wiki/Hypertext_Application_Language).
48
+
La struttura dell'albero di cartelle di output è conforme allo standard [REST delle Web API](https://en.wikipedia.org/wiki/REST), per cui il risultato finale è effettivamente una API statica, descritta mediante lo [standard OpenAPI](./dist/api/v2/openapi.v2.yml).
49
+
50
+
Tutte le risorse disponibili sono automaticamente raggiungibili grazie alla presenza di file `index.json` in ogni cartella conformi alla specifica [Hypertext Application Language (HAL)](https://en.wikipedia.org/wiki/Hypertext_Application_Language).
51
+
52
+
Tutte le cartelle mostrano una preview dei dati geografici che contengono in una mappa interattiva gestita da [LeafletJS](https://leafletjs.com).
35
53
36
54
Lo script di generazione è scritto in Python (v3.11) e le sue dipendenze dirette sono elencate nel file `requirements.txt`.
55
+
37
56
Oltre a queste si richiede che alcune librerie siano installate nel sistema,
38
57
in particolare [GDAL](https://gdal.org/index.html) e [SQLite](https://www.sqlite.org/index.html)
39
58
con l'estensione [Spatialite](https://www.gaia-gis.it/fossil/libspatialite/index).
40
59
41
-
Per semplificare la portabilità dello script è possibile (e conveniente) eseguirlo in un container Docker.
60
+
Per semplificare la portabilità dello script è possibile (e conveniente) eseguirlo in un container Docker, per cui è fornito un Dockerfile con cui fare la build dell'immagine.
L'utility `run.sh` contiene degli shortcut per gestire più facilmente l'immagine docker dell'applicazione (in ambiente windows si raccomanda l'uso di [Git Bash](https://gitforwindows.org/)).
55
74
Per l'elenco di tutti i comandi supportati: `bash run.sh help`.
56
75
57
-
Effettua la build delle immagini: `bash run.sh build`.
76
+
Effettua la build delle immagini: `bash run.sh build` (usa `rebuild` per non fare uso della cache).
58
77
59
-
Esegui il container per ogni tipologia di confine amministrativo e per tutte le versioni con `bash run.sh generate`
60
-
oppure indicando la singola versione di interesse con `bash run.sh generate YYYYMMDD`.
78
+
Esegui il container per ogni tipologia di confine amministrativo e per tutte le versioni con `bash run.sh generate` oppure indicando la singola versione di interesse con `bash run.sh generate YYYYMMDD`.
61
79
62
80
> Avvertenza: l'esecuzione può richiedere alcune ore o anche molte nel caso dell'elaborazione di tutte le versioni.
63
81
@@ -82,11 +100,13 @@ Per specificare una singola versione di interesse: `SOURCE_NAME=YYYYMMDD python
82
100
83
101
Il file `dist/api/v2/openapi.v2.yml` contiene le specifiche conformi allo standard [OpenAPI v3.1](https://www.openapis.org/).
84
102
85
-
Con `bash run.sh serve` puoi navigare la documentazione in maniera interattiva sia dalla homepage (http://localhost:8080),
86
-
sia come pagina standalone (http://localhost:8080/api/v2/).
103
+
Con `bash run.sh serve` puoi navigare la documentazione in maniera interattiva sia dalla homepage (http://localhost:8080), sia come pagina standalone (http://localhost:8080/api/v2/).
87
104
88
105
### Homepage
89
106
107
+
L'homepage del sito offre una preview dei dati su mappa interattiva (solo desktop) e la possibiltà di scaricare la risorsa scelta mediante form.
108
+
Contiene anche la documentazione completa dell'API e la possibilità di navigarla interattivamente grazie a [Swagger UI](https://swagger.io/tools/swagger-ui/).
109
+
90
110
Per il codice sorgente dell'homepage si rimanda al [README dedicato](src/app/README.md).
91
111
92
112
## Sviluppo
@@ -105,7 +125,7 @@ Ringraziamo il [Team per la Trasformazione Digitale](https://teamdigitale.govern
105
125
106
126
Un ringraziamento anche a [Datafactor Agrigento](https://www.datafactor.it/) per il supporto e il prezioso contributo di finalizzazione del file di configurazione `sources.json`.
107
127
108
-
Ringraziamo anche [Dataninja srl](https://www.dataninja.it) per il [lavoro pionieristico](https://github.com/dataninja/geo-shapes) sul tema, [Density Design](https://densitydesign.org/) che con [RAWGraphs](http://rawgraphs.io/) ha fatto emergere per la prima volta l'[esigenza di un'API](https://groups.google.com/g/densitydesign-raw/c/-MIAUtSjkzk) e [SparkFabrik srl](https://www.sparkfabrik.com/) per aver reso possibile la finalizzazione del progetto.
128
+
Ringraziamo anche [Dataninja srl](https://www.dataninja.it) per il [lavoro pionieristico](https://github.com/dataninja/geo-shapes) sul tema, [Density Design](https://densitydesign.org/) che con [RAWGraphs](http://rawgraphs.io/) ha fatto emergere per la prima volta l'[esigenza di un'API](https://groups.google.com/g/densitydesign-raw/c/-MIAUtSjkzk)di questo tipo e [SparkFabrik srl](https://www.sparkfabrik.com/) per aver reso possibile la finalizzazione del progetto.
0 commit comments