GeoJSON [1] es un formato estándar abierto diseñado para representar características geográficas simples , junto con sus atributos no espaciales. Está basado en el formato JSON .
Extensiones de nombre de archivo | .json , .geojson |
---|---|
Tipo de medio de Internet | application/geo+json [1] |
Tipo de formato | Formato de archivo GIS |
Extendido desde | JSON |
Estándar | RFC 7946 |
¿ Formato abierto ? | sí |
Sitio web | geojson |
Las características incluyen puntos (por lo tanto, direcciones y ubicaciones), cadenas de líneas (por lo tanto, calles, carreteras y límites), polígonos (países, provincias, extensiones de tierra) y colecciones de varias partes de estos tipos. Las características de GeoJSON no necesitan representar entidades del mundo físico únicamente; Las aplicaciones móviles de enrutamiento y navegación, por ejemplo, pueden describir su cobertura de servicio usando GeoJSON. [2]
El formato GeoJSON se diferencia de otros estándares GIS en que fue escrito y mantenido no por una organización de estándares formal, sino por un grupo de trabajo de desarrolladores de Internet. [3]
Una descendencia notable de GeoJSON es TopoJSON , una extensión de GeoJSON que codifica la topología geoespacial y que normalmente proporciona tamaños de archivo más pequeños.
Historia
El grupo de trabajo y la discusión del formato GeoJSON se iniciaron 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 lanzó GeoJSON como RFC 7946 en agosto de 2016.
Ejemplo
{ "type" : "FeatureCollection" , "features" : [ { "type" : "Feature" , "geometry" : { "type" : "Punto" , "coordenadas" : [ 102.0 , 0.5 ] }, "propiedades" : { "prop0" : "value0" } }, { "type" : "Feature" , "geometry" : { "type" : "LineString" , "coordenadas" : [ [ 102.0 , 0.0 ], [ 103.0 , 1.0 ] , [ 104.0 , 0.0 ], [ 105.0 , 1.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" : "value0" , "prop1" : { "this" : "that" } } } ] }
Geometrías
Tipo | Ejemplos de | |
---|---|---|
Punto | { "type" : "Punto" , "coordenadas" : [ 30.0 , 10.0 ] } | |
LineString | { "type" : "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 de | |
---|---|---|
Multipunto | { "tipo" : "Multipunto" , "coordenadas" : [ [ 10.0 , 40.0 ], [ 40.0 , 30.0 ], [ 20.0 , 20.0 ], [ 30.0 , 10.0 ] ] } | |
MultiLineString | { "type" : "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 ]] ] } | |
MultiPolygon | { "type" : "MultiPolygon" , "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" : "Polígono múltiple" , "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 ]] ] ] } | ||
GeometríaColección | { "tipo" : "GeometryCollection" , "geometrías" : [ { "tipo" : "Punto" , "coordenadas" : [ 40.0 , 10.0 ] }, { "tipo" : "LineString" , "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 ]] ] } ] } |
TopoJSON
TopoJSON es una extensión de GeoJSON que codifica la topología . En lugar de representar geometrías de forma discreta, las geometrías de los archivos TopoJSON se unen a partir de segmentos de línea compartidos denominados arcos . [6] 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 puede ser referenciado varias veces por diferentes formas, reduciendo así la redundancia y disminuyendo el tamaño del archivo. [7] Además, TopoJSON facilita aplicaciones que utilizan topología, como la simplificación de formas que preservan la topología, la coloración automática de mapas y los cartogramas .
Una implementación de referencia de la especificación TopoJSON está disponible como una herramienta de línea de comandos para codificar TopoJSON 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 [8] y PostGIS a partir de la versión 2.1.0. [9]
Esquema TopoJSON
Dada una forma GIS cerca de las coordenadas de latitud 0 ° y longitud 0 °, un archivo topojson simple pero válido y completo que contiene todos los metadatos, Polygon , LineString , elementos 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" : [ { "type" : "Polygon" , "arcs" : [[ 0 , 1 ]], "properties" : { "name" : "Left_Polygon" }}, { "type" : "Polígono" , "arcos" : [[ 2 , - 1 ]], "propiedades" : { "name" : "Right_Polygon" }} ] }, "one-line" : { "type" : "GeometryCollection" , "geometrías" : [ { "type" : "LineString" , "arcs" : [ 3 ], "properties" : { "name" : "Under_LineString" }} ] }, "two-places" : { "type" : "GeometryCollection" , "geometrías" : [ { "tipo" : "Punto" , "coordenadas" : [ 0 , 0 ], "propiedades" : { "nombre" : "Origine_Point" }}, { "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 ]] ] }
Ver también
Referencias
- ^ a b Mayordomo, Howard; Daly, Martin; Doyle, Allan; Gillies, Sean; Hagen, Stefan; Schaub, Tim (agosto de 2016). RFC 7946 . IETF . doi : 10.17487 / RFC7946 .
- ^ "Proporcionar direcciones" . developer.apple.com .
- ^ "Página de información de GeoJSON" . listas.geojson.org .
- ^ "El Archivo GeoJSON de marzo de 2007 por hilo" . listas.geojson.org .
- ^ "JSON geográfico (geojson) -" . datatracker.ietf.org .
- ^ "topojson / topojson-especificación" . 11 de diciembre de 2020 - a través de GitHub.
- ^ "topojson / topojson" . GitHub .
- ^ "Release / 1.11.0-News - GDAL" . trac.osgeo.org .
- ^ "AsTopoJSON" . postgis.net .
Fuentes
- Andrews, Christopher (18 de septiembre de 2007). "Tecnología emergente: AJAX y GeoJSON" . Archivado desde el original el 22 de mayo de 2009.
- "Geoweb Guru: descripción técnica: GeoJSON" . 16 de febrero de 2009. Archivado desde el original el 21 de febrero de 2009 .
- Lambert, Chris (4 de mayo de 2009). "Blog de desarrolladores de Google Geo: construya sobre su ubicación pública de Latitude con GeoJSON y KML" .
enlaces externos
- Página web oficial
- topojson / topojson
- topojson / topojson-especificación