Extensiones de nombre de archivo | .json ,.geojson |
---|---|
Tipo de medio de Internet | application/geo+json [1] |
Tipo de formato | Formato de archivo SIG |
Extendido desde | JSON |
Estándar | RFC 7946 |
¿ Formato abierto ? | Sí |
Sitio web | geojson.org |
GeoJSON [1] es un formato estándar abierto diseñado para representar características geográficas simples , junto con sus atributos no espaciales. Se basa en el formato JSON .
Las características incluyen puntos (es decir, direcciones y ubicaciones), cadenas de líneas (es decir, calles, autopistas y límites), polígonos (países, provincias, extensiones de tierra) y colecciones de varias partes de estos tipos. Las características GeoJSON no se limitan a representar entidades del mundo físico únicamente; las aplicaciones de navegación y enrutamiento móvil, por ejemplo, pueden describir su cobertura de servicio utilizando GeoJSON. [2]
El formato GeoJSON se diferencia de otros estándares de sistemas de información geográfica en que fue escrito y mantenido no por una organización de estándares formal, sino por un grupo de trabajo de desarrolladores en Internet. [3]
Un descendiente notable de GeoJSON es TopoJSON, una extensión de GeoJSON que codifica la topología geoespacial y que generalmente proporciona tamaños de archivo más pequeños.
El grupo de trabajo y el debate sobre el formato GeoJSON comenzaron en marzo de 2007 [4] y la especificación del formato se finalizó en junio de 2008.
En abril de 2015, el Grupo de Trabajo de Ingeniería de Internet fundó el grupo de trabajo Geographic JSON [5] que publicó GeoJSON como RFC 7946 en agosto de 2016.
{ "tipo" : "FeatureCollection" , "características" : [ { "tipo" : "Característica" , "geometría" : { "tipo" : "Punto" , "coordenadas" : [ 102.0 , 0.5 ] }, "propiedades" : { "prop0" : "valor0" } }, { "tipo" : "Característica" , "geometría" : { "tipo" : "Cadena de líneas" , "coordenadas" : [ [ 102.0 , 0.0 ], [ 103.0 , 1.0 ], [ 104.0 , 0.0 ], [ 105.0 , 99.0 ] ] }, "propiedades" : { "prop0" : "valor0" , "prop1" : 0.0 } }, { "tipo" : "Característica" , "geometría" : { "tipo" : "Polígono" , "coordenadas" : [ [ [ 100.0 , 0.0 ], [ 101.0 , 0.0 ], [ 101.0 , 1.0 ], [ 100.0 , 1.0 ], [ 100.0 , 0.0 ] ] } , "propiedades" : { "prop0" : "valor0" , "prop1" : { "esto" : "eso" } } } ] }
|
Los puntos son [x, y] o [x, y, z]. Pueden ser [longitud, latitud] o [coordenadas este, norte] . La elevación, en metros, [6] es un tercer número opcional. Son números decimales. [7]
Por ejemplo, Londres (51,5074° Norte, 0,1278° Oeste) es [-0,1278, 51,5074]
Tipo | Ejemplos | |
---|---|---|
Punto | { "tipo" : "Punto" , "coordenadas" : [ 30.0 , 10.0 ] } | |
Cadena de líneas | { "tipo" : "LineString" , "coordenadas" : [ [ 30.0 , 10.0 ], [ 10.0 , 30.0 ], [ 40.0 , 40.0 ] ] } | |
Polígono | { "tipo" : "Polígono" , "coordenadas" : [ [ [ 30.0 , 10.0 ], [ 40.0 , 40.0 ], [ 20.0 , 40.0 ], [ 10.0 , 20.0 ], [ 30.0 , 10.0 ] ] ] } | |
{ "tipo" : "Polígono" , "coordenadas" : [ [ [ 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 ] ] ] } |
Tipo | Ejemplos | |
---|---|---|
Multipunto | { "tipo" : "MultiPoint" , "coordenadas" : [ [ 10.0 , 40.0 ], [ 40.0 , 30.0 ], [ 20.0 , 20.0 ], [ 30.0 , 10.0 ] ] } | |
Cadena de múltiples líneas | { "tipo" : "MultiLineString" , "coordenadas" : [ [ [ 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 ] ] ] } | |
Multipolígono | { "tipo" : "MultiPolígono" , "coordenadas" : [ [ [ [ 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 ] ] ] } | |
{ "tipo" : "MultiPolígono" , "coordenadas" : [ [ [ [ 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 ] ] ] ] } | ||
Colección Geometría | { "tipo" : "GeometryCollection" , "geometrías" : [ { "tipo" : "Punto" , "coordenadas" : [ 40.0 , 10.0 ] }, { "tipo" : "Cadena de líneas" , "coordenadas" : [ [ 10.0 , 10.0 ], [ 20.0 , 20.0 ], [ 10.0 , 40.0 ] ] }, { "tipo" : "Polígono" , "coordenadas" : [ [ [ 40.0 , 40.0 ], [ 20.0 , 45.0 ], [ 45.0 , 30.0 ], [ 40.0 , 40.0 ] ] ] } ] } |
Una alternativa a GeoJSON es codificar una característica geográfica por línea, con saltos de línea (o caracteres separadores de registros) que designan la separación entre registros.
Este formato puede analizarse de forma mucho más rápida y eficiente que el GeoJSON normal, ya que las herramientas pueden leer registros individuales en paralelo. Este formato es similar al JSON delimitado por nuevas líneas.
Las variantes de GeoJSON delimitado por nuevas líneas incluyen:
TopoJSON es una extensión de GeoJSON que codifica la topología . En lugar de representar geometrías de forma discreta, las geometrías en los archivos TopoJSON se unen a partir de segmentos de línea compartidos llamados arcos . [10] Los arcos son secuencias de puntos, mientras que las cadenas de líneas y los polígonos se definen como secuencias de arcos. Cada arco se define solo una vez, pero se puede hacer referencia a él varias veces mediante diferentes formas, lo que reduce la redundancia y disminuye el tamaño del archivo. [11] Además, TopoJSON facilita las aplicaciones que utilizan la topología, como la simplificación de formas que preserva la topología, la coloración automática de mapas y los cartogramas .
Hay disponible una implementación de referencia de la especificación TopoJSON como herramienta de línea de comandos para codificar TopoJSON a partir de GeoJSON (o ESRI Shapefiles) y una biblioteca de JavaScript del lado del cliente para decodificar TopoJSON nuevamente a GeoJSON. TopoJSON también es compatible con la popular herramienta OGR a partir de la versión 1.11 [12] y con PostGIS a partir de la versión 2.1.0. [13]
Dada una forma SIG cerca de las coordenadas de latitud 0° y longitud 0°, un archivo topojson simple pero válido y completo que contiene todos los metadatos, elementos Polygon , LineString , Point , arcos y propiedades se define de la siguiente manera:
{ "tipo" : "Topología" , "transformar" : { "escala" : [ 1 , 1 ], "traducir" : [ 0 , 0 ] }, "objetos" : { "dos-cuadrados" : { "tipo" : "GeometryCollection" , "geometrías" : [ { "tipo" : "Polígono" , "arcos" : [[ 0 , 1 ]], "propiedades" : { "nombre" : "Polígono_izquierdo" }}, { "tipo" : "Polígono" , "arcos" : [[ 2 , - 1 ]], "propiedades" : { "nombre" : "Polígono_derecho" }} ] }, "una-línea" : { "tipo" : "GeometryCollection" , "geometrías" : [ { "tipo" : "Cadena_de_líneas" , "arcos" : [ 3 ], "propiedades" : { "nombre" : "Cadena_de_líneas_subyacente" }} ] }, "dos-lugares" : { "tipo" : "Collection_Geometry" , "geometrías" : [ { "tipo" : "Punto" , "coordenadas" : [ 0 , 0 ], "propiedades" : { "nombre" : "Punto_de_origen" }}, { "tipo" : "Punto" , "coordenadas" : [ 0 , - 1 ], "propiedades" : { "nombre" :"Punto_bajo" }} ] } }, "arcos" : [ [[ 1 , 2 ],[ 0 , - 2 ]], [[ 1 , 0 ],[ - 1 , 0 ],[ 0 , 2 ],[ 1 , 0 ]], [[ 1 , 2 ] ,[ 1 , 0 ],[ 0 , - 2 ],[ - 1 , 0 ]], [[ 0 , - 1 ] ,[ 2 , 0 ]] ] }