standard ouvert conçu pour représenter des entités géographiques simples , ainsi que leurs attributs non spatiaux. Il est basé sur le format JSON .
Les entités GeoJSON comprennent des points (donc des adresses et des emplacements), des chaînes de lignes (donc des rues, des autoroutes et des limites), des polygones (pays, provinces, parcelles de terrain) et des collections multi-éléments de ces types. Les entités GeoJSON ne se limitent pas à la représentation d'entités du monde physique ; les applications mobiles de routage et de navigation, par exemple, peuvent décrire leur couverture de service à l'aide de GeoJSON.
Le format GeoJSON diffère des autres normes de systèmes d'information géographique en ce qu'il a été écrit et est maintenu non pas par une organisation de normalisation formelle, mais par un groupe de travail Internet de développeurs.
TopoJSON est un dérivé notable de GeoJSON ; il s’agit d’une extension de GeoJSON qui encode la topologie géospatiale et qui offre généralement des fichiers de taille réduite.
Internet Engineering Task Force a fondé le groupe de travail Geographic JSON qui a publié GeoJSON en tant que RFC 7946 en août 2016.Exemple
Exemple GeoJSON ( données cartographiques )Géométries
Les points sont représentés par [x, y] ou [x, y, z]. Ils peuvent être exprimés en [longitude, latitude] ou en [coordonnées est, nord] . L'altitude, en mètres, est une troisième valeur optionnelle. Il s'agit de nombres décimaux.
Par exemple, Londres (51,5074° Nord, 0,1278° Ouest) est [-0,1278, 51,5074]
Le système de référence de coordonnées pour toutes les coordonnées GeoJSON est un système de référence de coordonnées géographiques, utilisant le système géodésique mondial 1984 (WGS 84) [WGS84], avec des unités de longitude et de latitude en degrés décimaux.
| Taper | Exemples | |
|---|---|---|
| Indiquer | : "Point" , "coordinates" : [ 30.0 , 10.0 ] } | |
| LigneString | : "LineString" , "coordonnées" : [ [ 30.0 , 10.0 ], [ 10.0 , 30.0 ], [ 40.0 , 40.0 ] ] } | |
| Polygone | : "Polygone" , "coordinates" : [ [ [ 30.0 , 10.0 ], [ 40.0 , 40.0 ], [ 20.0 , 40.0 ], [ 10.0 , 20.0 ], [ 30.0 , 10.0 ] ] ] } | |
: "Polygone" , "coordinates" : [ [ [ 35.0 , 10.0 ], [ 45.0 , 45.0 ], [ 15.0 , 40.0 ], [ 10.0 , 20.0 ], [ 35.0 , 10.0 ] ], [ [ 20.0 , 30.0 ], [ 35.0 , 35.0 ], [ 30.0 , 20.0 ], [ 20.0 , 30.0 ] ] ] } | ||
| Taper | Exemples | |
|---|---|---|
| Multipoint | : "MultiPoint" , "coordinates" : [ [ 10.0 , 40.0 ], [ 40.0 , 30.0 ], [ 20.0 , 20.0 ], [ 30.0 , 10.0 ] ] } | |
| Chaîne multiligne | : "MultiLineString" , "coordinates" : [ [ [ 10.0 , 10.0 ], [ 20.0 , 20.0 ], [ 10.0 , 40.0 ] ], [ [ 40.0 , 40.0 ], [ 30.0 , 30.0 ], [ 40.0 , 20.0 ], [ 30.0 , 10.0 ] ] ] } | |
| MultiPolygon | : "MultiPolygon" , "coordinates" : [ [ [ [ 30.0 , 20.0 ], [ 45.0 , 40.0 ], [ 10.0 , 40.0 ], [ 30.0 , 20.0 ] ] ], [ [ [ 15.0 , 5.0 ], [ 40.0 , 10.0 ], [ 10.0 , 20.0 ] , [ 5.0 , 10.0 ], [ 15.0 , 5.0 ] ] ] } | |
: "MultiPolygon" , "coordinates" : [ [ [ [ 40.0 , 40.0 ], [ 20.0 , 45.0 ], [ 45.0 , 30.0 ], [ 40.0 , 40.0 ] ] ], [ [ [ 20.0 , 35.0 ], [ 10.0 , 30.0 ], [ 10.0 , 10.0 ], [ 30.0 , 5.0 ], [ 45.0 , 20.0 ], [ 20.0 , 35.0 ] ], [ [ 30.0 , 20.0 ], [ 20.0 , 15.0 ], [ 20.0 , 25.0 ], [ 30.0 , 20.0 ] ] ] ] } | ||
| Collection de géométrie | : "GeometryCollection" , "geometries" : [ { "type" : "Point" , "coordinates" : [ 40.0 , 10.0 ] }, { "type" : "LineString" , "coordinates" : [ [ 10.0 , 10.0 ], [ 20.0 , 20.0 ], [ 10.0 , 40.0 ] ] }, { "type" : "Polygon" , "coordinates" : [ [ [ 40.0 , 40.0 ], [ 20.0 , 45.0 ], [ 45.0 , 30.0 ], [ 40.0 , 40.0 ] ] ] } ] } | |
GeoJSON délimité par des sauts de ligne
Une alternative à GeoJSON consiste à encoder une entité géographique par ligne, les sauts de ligne (ou caractères de séparation d'enregistrements) désignant la séparation entre les enregistrements.
Ce format peut être analysé beaucoup plus rapidement et efficacement que le GeoJSON classique, car les outils peuvent lire les enregistrements individuellement en parallèle. Ce format est similaire au JSON délimité par des sauts de ligne .
Les variantes de GeoJSON délimité par des sauts de ligne incluent :
- GeoJSONSeq (abréviation de GeoJSON Text Sequences) - avec des caractères de séparation d'enregistrements (RS) séparant les entités
- GeoJSONL (abréviation de GeoJSON Lines) - avec des caractères de nouvelle ligne séparant les entités
TopoJSON
TopoJSON est une extension de GeoJSON qui encode la topologie . Au lieu de représenter les géométries de manière discrète, les géométries dans les fichiers TopoJSON sont assemblées à partir de segments de ligne partagés appelés arcs . Les arcs sont des séquences de points, tandis que les chaînes de lignes et les polygones sont définis comme des séquences d'arcs. Chaque arc est défini une seule fois, mais peut être référencé plusieurs fois par différentes formes, réduisant ainsi la redondance et la taille du fichier. De plus, TopoJSON facilite les applications qui utilisent la topologie, telles que la simplification de formes préservant la topologie, la coloration automatique des cartes et les cartogrammes .
Une implémentation de référence de la spécification TopoJSON est disponible sous la forme d'un outil en ligne de commande permettant d'encoder des données TopoJSON à partir de GeoJSON (ou de fichiers ESRI Shapefile) et d'une bibliothèque JavaScript côté client permettant de décoder à nouveau les données TopoJSON en GeoJSON. TopoJSON est également pris en charge par l'outil OGR, largement répandu, depuis la version 1.11 et par PostGIS depuis la version 2.1.0
Schéma TopoJSON
Étant donné une forme SIG proche des coordonnées de latitude 0° et de longitude 0°, un fichier topojson simple mais valide et complet contenant toutes les métadonnées, les éléments Polygon , LineString , Point , les arcs et les propriétés est défini comme suit :
