GeoJSON
# GeoJSON

GeoJSON è un formato aperto utilizzato per archiviare una collezione di geometrie spaziali i cui attributi sono descritti attraverso JavaScript Object Notation. Le geometrie possibili sono punti (come ad esempio indirizzi o toponimi), linee spezzate (come percorsi, strade e confini), poligoni (paesi, province, laghi), e collezioni multiple di queste tipologie. Le geometrie GeoJSON non devono però necessariamente rappresentare entità geografiche: ad esempio, i software di navigazione assistita possono usarlo per descrivere l'area di copertura del servizio.

Il formato GeoJSON differisce dagli altri standard geographic information system in quanto è scritto e mantenuto da un gruppo di lavoro di sviluppatori e non da organi di standard internazionali.

## Storia

Il gruppo di lavoro e di discussione del formato GeoJSON è nato nel marzo 2007 e le specifiche finali del formato sono state completate nel giugno 2008.

## Esempio

### Geometrie

primitive geometriche :

| tipo | esempi |
| - | - |
| Punto | { "type": "Point", "coordinates": [11.1215698, 46.0677293] } |
| Linea spezzata | { "type": "LineString", "coordinates": [ [11.1212678, 46.0686443],[11.1212316,46.0688409] ] } |
| Poligono | { "type": "Polygon", "coordinates": [ [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]] ] } |
| Poligono | { "type": "Polygon", "coordinates": [ [[35, 10], [45, 45], [15, 40], [10, 20], [35, 10]], [[20, 30], [35, 35], [30, 20], [20, 30]] ] } |

Geometrie multiparti :

| Tipo | Esempi |
| - | - |
| Multi punto | { "type": "MultiPoint", "coordinates": [ [10, 40], [40, 30], [20, 20], [30, 10] ] } |
| Multi linee spezzate | { "type": "MultiLineString", "coordinates": [ [[10, 10], [20, 20], [10, 40]], [[40, 40], [30, 30], [40, 20], [30, 10]] ] } |
| Multipoligono | { "type": "MultiPolygon", "coordinates": [ [ [[30, 20], [45, 40], [10, 40], [30, 20]] ], [ [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] ] ] } |
| Multipoligono | { "type": "MultiPolygon", "coordinates": [ [ [[40, 40], [20, 45], [45, 30], [40, 40]] ], [ [[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]], [[30, 20], [20, 15], [20, 25], [30, 20]] ] ] } |

## Software

GeoJSON è supportato da moltissimi software GIS, inclusi OpenLayers, Leaflet, Geoforge, GeoServer, GeoDjango, GDAL, Safe Software FME, e CartoDB, È inoltre possibile utilizzare GeoJSON con PostGIS e Mapnik, entrambi attraverso l'uso della libreria di conversione GDAL OGR.

Bing Maps, Yahoo! e Google supportano anche GeoJSON nelle loro API.

L'integrazione con Google Maps è possibile attraverso l'uso di una apposita libreria.

GitHub offre inoltre la visualizzazione dei dati in GeoJSON.

Il progetto geojson.io permette di visualizzare, modificare e distribuire file geojson direttamente da web.

## TopoJSON

TopoJSON è una estensione di GeoJSON che codifica le geometrie in topologie spaziali. Le geometrie vengono pertanto rappresentante dividendole in archi. Gli archi sono sequenze di punti, mentre le linee e i poligoni sono definiti come sequenze di archi. Ogni arco è definito una volta sola, ma può essere riutilizzato infinite volte per descrivere una geometria, l'effetto che se ne produce è una notevole riduzione di ridondanza di informazioni e, pertanto, la riduzione delle dimensioni del file. Inoltre, TopoJSON semplifica le applicazioni che fanno uso di topologia, fornendo funzionalità come la colorazione automatica di mappe o cartogrammi.

Una delle linee guida sull'implementazione delle specifiche TopoJSON è disponibile attraverso un tool a linea di comando per generare un TopoJSON partendo da un GeoJSON (o da shapefile ESRI) e, attraverso uno script JavaScript client side, è poi possibile trasformare dati archiviati in TopoJSON in GeoJSON.

TopoJSON è inoltre supportato dal tool OGR dalla versione 1.11 e da PostGIS dalla versione 2.1.0.

