GeoJSON

GeoJSON
Extensão de arquivos
.json, .geojson
Tipo de mídia da Internet
application/geo+json[1]
Estendido deJSON
PadrãoPredefinição:IETF RFC

GeoJSON[1] é um formato de padrão aberto projetado para representar recursos geográficos simples, juntamente com seus atributos não espaciais. É baseado no formato JSON.

Os recursos incluem pontos (portanto, endereços e locais), sequências de linhas (portanto, ruas, rodovias e fronteiras), polígonos (países, províncias, parcelas de terra) e coleções de múltiplas partes desses tipos. Os recursos GeoJSON não se limitam a representar apenas entidades do mundo físico; aplicativos móveis de roteamento e navegação, por exemplo, podem descrever sua cobertura de serviço usando GeoJSON.[2]

O formato GeoJSON difere de outros padrões de sistema de informação geográfica (GIS) pelo fato de ter sido escrito e ser mantido não por uma organização formal de padrões, mas por um grupo de trabalho de desenvolvedores na Internet.[3]

Um descendente notável do GeoJSON é o TopoJSON, uma extensão do GeoJSON que codifica a topologia geoespacial e que normalmente oferece tamanhos de arquivo menores.

História

O grupo de trabalho e a discussão sobre o formato GeoJSON começaram em março de 2007[4] e a especificação do formato foi finalizada em junho de 2008.

Em abril de 2015, a Internet Engineering Task Force (IETF) fundou o grupo de trabalho Geographic JSON,[5] que lançou o GeoJSON como RFC 7946 em agosto de 2016.

Exemplo

{
   "type": "FeatureCollection",
   "features": [{
	   "type": "Feature",
	   "geometry": {
		   "type": "Point",
		   "coordinates": [102.0, 0.5]
	   },
	   "properties": {
		   "prop0": "value0"
	   }
   }, {
	   "type": "Feature",
	   "geometry": {
		   "type": "LineString",
		   "coordinates": [
			   [102.0, 0.0],
			   [103.0, 1.0],
			   [104.0, 0.0],
			   [105.0, 1.0]
		   ]
	   },
	   "properties": {
		   "prop0": "value0",
		   "prop1": 0.0
	   }
   }, {
	   "type": "Feature",
	   "geometry": {
		   "type": "Polygon",
		   "coordinates": [
			   [
				   [100.0, 0.0],
				   [101.0, 0.0],
				   [101.0, 1.0],
				   [100.0, 1.0],
				   [100.0, 0.0]
			   ]
		   ]
	   },
	   "properties": {
		   "prop0": "value0",
		   "prop1": {
			   "this": "that"
		   }
	   }
   }]
}

Geometrias

Pontos são [x, y] ou [x, y, z]. Eles podem ser [longitude, latitude] ou [abcissas e ordenadas]. A elevação, em metros,[6] é um terceiro número opcional. Eles são números decimais.[7]

Por exemplo, Londres (51,5074° Norte, 0,1278° Oeste) é [-0.1278, 51.5074]

O sistema de referência de coordenadas para todas as coordenadas GeoJSON é um sistema de referência de coordenadas geográficas, usando o datum World Geodetic System 1984 (WGS 84) [WGS84], com unidades de longitude e latitude em graus decimais.[8]

Primitivas de geometria
Tipo Exemplos
Point
{
"type": "Point",
"coordinates": [30.0, 10.0]
}
LineString
{
    "type": "LineString", 
    "coordinates": [
        [30.0, 10.0],
        [10.0, 30.0],
        [40.0, 40.0]
    ]
}
Polígono
{
    "type": "Polygon", 
    "coordinates": [
        [
            [30.0, 10.0],
            [40.0, 40.0],
            [20.0, 40.0],
            [10.0, 20.0],
            [30.0, 10.0]
        ]
    ]
}
{
    "type": "Polygon", 
    "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]
        ]
    ]
}
Geometrias de múltiplas partes
Tipo Exemplos
MultiPoint
{
    "type": "MultiPoint", 
    "coordinates": [
        [10.0, 40.0],
        [40.0, 30.0],
        [20.0, 20.0],
        [30.0, 10.0]
    ]
}
MultiLineString
{
    "type": "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
{
    "type": "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]
            ]
        ]
    ]
}
{
    "type": "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]
            ]
        ]
    ]
}
GeometryCollection
{
    "type": "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 delimitado por nova linha

Uma alternativa ao GeoJSON é codificar um recurso geográfico por linha, com quebras de linha (ou caracteres separadores de registro) designando a separação entre os registros.

Este formato pode ser muito mais rápido e eficiente para analisar do que o GeoJSON normal, pois as ferramentas podem ler registros individuais em paralelo. Este formato é semelhante ao JSON delimitado por nova linha.

As variantes do GeoJSON delimitado por nova linha incluem:

  • GeoJSONSeq (abreviação de GeoJSON Text Sequences) - com caracteres separadores de registro (RS) separando os recursos[9]
  • GeoJSONL (abreviação de GeoJSON Lines) - com caracteres de nova linha separando os recursos[10]

TopoJSON

TopoJSON é uma extensão do GeoJSON que codifica topologia. Em vez de representar geometrias de forma discreta, as geometrias nos arquivos TopoJSON são costuradas a partir de segmentos de linha compartilhados chamados arcos.[11] Arcos são sequências de pontos, enquanto sequências de linhas e polígonos são definidos como sequências de arcos. Cada arco é definido apenas uma vez, mas pode ser referenciado várias vezes por diferentes formas, reduzindo assim a redundância e diminuindo o tamanho do arquivo.[12] Além disso, o TopoJSON facilita aplicações que utilizam topologia, como simplificação de formas com preservação de topologia, coloração automática de mapas e cartogramas.

Uma implementação de referência da especificação TopoJSON está disponível como uma ferramenta de linha de comando para codificar TopoJSON a partir de GeoJSON (ou ESRI Shapefiles) e uma biblioteca JavaScript no lado do cliente para decodificar TopoJSON de volta para GeoJSON. O TopoJSON também é suportado pela popular ferramenta OGR a partir da versão 1.11[13] e pelo PostGIS a partir da versão 2.1.0.[14]

Esquema TopoJSON

Dada uma forma GIS próxima às coordenadas de latitude 0° e longitude 0°, um arquivo topojson simples, mas válido e completo, contendo todos os metadados, elementos Polygon, LineString, Point, arcos e propriedades é definido da seguinte forma:

Formas Topojson
{
  "type":"Topology",
  "transform":{
    "scale": [1,1],
    "translate": [0,0]
  },
  "objects":{ 
    "two-squares":{
      "type": "GeometryCollection",
      "geometries":[
        {"type": "Polygon", "arcs":[[0,1]],"properties": {"name": "Left_Polygon" }},
        {"type": "Polygon", "arcs":[[2,-1]],"properties": {"name": "Right_Polygon" }}
      ]
    },
    "one-line": {
      "type":"GeometryCollection",
      "geometries":[
        {"type": "LineString", "arcs": [3],"properties":{"name":"Under_LineString"}}
      ]
    },
    "two-places":{
      "type":"GeometryCollection",
      "geometries":[
        {"type":"Point","coordinates":[0,0],"properties":{"name":"Origine_Point"}},
        {"type":"Point","coordinates":[0,-1],"properties":{"name":"Under_Point"}}
      ]
    }
  },
  "arcs": [
    [[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 também

Geography Markup Language (GML)

Sistema de informação Geográfica (GIS)

Keyhole Markup Language (KML)

Referências

  1. a b Butler, Howard; Daly, Martin; Doyle, Allan; Gillies, Sean; Hagen, Stefan; Schaub, Tim (Agosto 2016). RFC 7946. IETF. doi:10.17487/RFC7946Acessível livremente 
  2. «Providing Directions». developer.apple.com 
  3. «GeoJSON Info Page». lists.geojson.org 
  4. «The GeoJSON March 2007 Archive by thread». lists.geojson.org 
  5. «Geographic JSON (geojson) -». datatracker.ietf.org 
  6. Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (agosto 2016). The GeoJSON Format (Relatório). Internet Engineering Task Force 
  7. Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (agosto 2016). «GeoJSON RFC #3.1.1» 
  8. Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (agosto 2016). The GeoJSON Format (Relatório). Internet Engineering Task Force 
  9. Gillies, Sean (abril 2017). GeoJSON Text Sequences (Relatório). Internet Engineering Task Force 
  10. «GeoJSONL: An optimized format for large geographic datasets». Interline Technologies (em inglês). 11 de setembro de 2018. Consultado em 11 de novembro de 2024 
  11. «topojson/topojson-specification». 11 dezembro 2020 – via GitHub 
  12. «topojson/topojson». GitHub 
  13. «Release/1.11.0-News – GDAL». trac.osgeo.org 
  14. «AsTopoJSON». postgis.net 

Fontes

Andrews, Christopher (18 setembro 2007). «Emerging Technology: AJAX and GeoJSON». Arquivado do original em 22 maio 2009 

«Geoweb Guru: Technical Overview: GeoJSON». 16 fevereiro 2009. Arquivado do original em 21 fevereiro 2009 

Lambert, Chris (4 maio 2009). «Google Geo Developers Blog: Build on top of your public Latitude location with GeoJSON & KML» 

«Página oficial» 

topojson/topojson

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.