Padrão GeoJSON Explicado: Domine a RFC 7946 para Dados Geoespaciais
No mundo do mapeamento web e dos Sistemas de Informação Geográfica (GIS), o GeoJSON tornou-se a linguagem universal para compartilhar dados espaciais. Quer você esteja usando Leaflet, Mapbox ou Google Maps, provavelmente está interagindo com a RFC 7946, o padrão oficial do GeoJSON.
O que é a RFC 7946 (GeoJSON)?
Publicada em 2016, a RFC 7946 formalizou o formato GeoJSON. É um formato de intercâmbio de dados geoespaciais baseado em JSON (JavaScript Object Notation). Ele permite representar geometria, feições (features) e coleções de feições.
O GeoJSON suporta os seguintes tipos de geometria:
- Point (Ponto): Uma única posição (longitude, latitude).
- LineString (Linha): Uma série de pontos conectados.
- Polygon (Polígono): Uma área fechada (o primeiro e o último ponto são iguais).
- MultiPoint, MultiLineString, MultiPolygon: Coleções dos tipos acima.
- GeometryCollection: Uma mistura de diferentes tipos de geometria.
Princípios Core do GeoJSON
1. O Sistema de Coordenadas
A RFC 7946 determina estritamente o uso do datum WGS 84 (World Geodetic System 1984). As coordenadas são sempre ordenadas como [longitude, latitude]. Aviso: Muitos desenvolvedores cometem o erro de usar [latitude, longitude], o que colocará seus dados na parte errada do mundo!
2. O Objeto Feature
Um objeto Feature do GeoJSON contém uma geometria e metadados adicionais (propriedades).
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"name": "Ilhas Dinagat"
}
}
3. A FeatureCollection
A maioria dos arquivos GeoJSON são objetos FeatureCollection, permitindo agrupar várias feições em um único arquivo.
Cenários de Aplicação Prática
Mapeamento Web
O GeoJSON é o formato nativo para a maioria das bibliotecas modernas de mapeamento web. É fácil de carregar via AJAX e pode ser estilizado dinamicamente com base no objeto properties.
Armazenamento em Banco de Dados
Bancos de dados modernos como PostgreSQL (com PostGIS) e MongoDB têm suporte nativo para GeoJSON, permitindo realizar consultas espaciais (ex: "Encontre todos os pontos a 5 km deste local").
Visualização de Dados
Ferramentas como D3.js podem pegar dados GeoJSON e renderizá-los como mapas SVG interativos, perfeitos para painéis e infográficos.
GeoJSON vs. KML vs. Shapefile
| Característica | GeoJSON | KML | Shapefile |
|---|---|---|---|
| Formato | JSON | XML | Binário (Múltiplos arquivos) |
| Web Friendly | Excelente | Moderado | Ruim |
| Estilização | via propriedades | Integrado (XML) | Separado (.qml/.sld) |
| Legível por Humanos | Sim | Sim | Não |
FAQ
P: Por que é [longitude, latitude] em vez de [latitude, longitude]?
R: A RFC 7946 segue o sistema de coordenadas cartesianas padrão [x, y], onde a longitude corresponde ao eixo X e a latitude ao eixo Y.
P: Posso usar sistemas de coordenadas (CRS) diferentes?
R: Embora versões mais antigas do GeoJSON permitissem CRS personalizados, a RFC 7946 exige estritamente o WGS 84. Se seus dados estiverem em um sistema diferente (como UTM), você deve projetá-los para WGS 84 antes de compartilhá-los como GeoJSON.
P: Como lidar com grandes conjuntos de dados?
R: Para conjuntos de dados espaciais muito grandes, o GeoJSON pode tornar-se lento para carregar. Considere usar TopoJSON (que reduz o tamanho do arquivo compartilhando a topologia) ou Vector Tiles (MVT) para mapeamento em nível de produção.
Ferramentas Relacionadas
- Formatador JSON - Essencial para validar e limpar suas estruturas GeoJSON.
- Codificador/Decodificador de URL - Útil ao passar dados GeoJSON como parâmetro de URL.
- Gerador de UUID - Frequentemente usado para gerar IDs exclusivos para feições GeoJSON.