GeoJSON
GeoJSON é 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. 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. 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.
| GeoJSON | |
|---|---|
| Extensão de arquivos | .json, .geojson |
| Tipo de mídia da Internet | application/geo+json[1] |
| Estendido de | JSON |
| Padrão | Predefiniçã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
[editar | editar código]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
[editar | editar código]{
"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
[editar | editar código]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]
| 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]
]
]
}
| ||
| 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
[editar | editar código]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
[editar | editar código]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
[editar | editar código]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:

{
"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
[editar | editar código]Geography Markup Language (GML)
Sistema de informação Geográfica (GIS)
Referências
[editar | editar código]- ↑ a b Butler, Howard; Daly, Martin; Doyle, Allan; Gillies, Sean; Hagen, Stefan; Schaub, Tim (August 2016). RFC 7946. IETF. doi:10.17487/RFC7946
Verifique data em: |data=(ajuda) - ↑ «Providing Directions». developer.apple.com
- ↑ «GeoJSON Info Page». lists.geojson.org
- ↑ «The GeoJSON March 2007 Archive by thread». lists.geojson.org
- ↑ «Geographic JSON (geojson) -». datatracker.ietf.org
- ↑ Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (August 2016). The GeoJSON Format (Relatório). Internet Engineering Task Force Verifique data em:
|data=(ajuda) - ↑ Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (August 2016). «GeoJSON RFC #3.1.1» Verifique data em:
|data=(ajuda) - ↑ Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (August 2016). The GeoJSON Format (Relatório). Internet Engineering Task Force Verifique data em:
|data=(ajuda) - ↑ Gillies, Sean (April 2017). GeoJSON Text Sequences (Relatório). Internet Engineering Task Force Verifique data em:
|data=(ajuda) - ↑ «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
- ↑ «topojson/topojson-specification». 11 December 2020 – via GitHub Verifique data em:
|data=(ajuda) - ↑ «topojson/topojson». GitHub
- ↑ «Release/1.11.0-News – GDAL». trac.osgeo.org
- ↑ «AsTopoJSON». postgis.net
Fontes
[editar | editar código]Andrews, Christopher (18 September 2007). «Emerging Technology: AJAX and GeoJSON». Cópia arquivada em 22 May 2009 Verifique data em: |arquivodata=, |data= (ajuda)
«Geoweb Guru: Technical Overview: GeoJSON». 16 February 2009. Cópia arquivada em 21 February 2009 Verifique data em: |arquivodata=, |data= (ajuda)
Lambert, Chris (4 May 2009). «Google Geo Developers Blog: Build on top of your public Latitude location with GeoJSON & KML» Verifique data em: |data= (ajuda)