Guia · Geoprocessamento
KML, shapefile, GeoJSON ou GeoPackage: diferenças e quando usar cada formato
KML é o formato do Google Earth: um arquivo de texto, sempre em graus no datum WGS 84, bom para visualizar e compartilhar com quem não usa SIG. Shapefile é o formato mais aceito por órgãos públicos e softwares de SIG, mas é antigo e cheio de limitações (vários arquivos, nomes de campo com até 10 caracteres, 2 GB por arquivo, sem valores nulos). GeoJSON é o padrão da web, também em graus WGS 84, ótimo para APIs e mapas online. GeoPackage é o formato mais completo para trabalho técnico: um arquivo único, várias camadas, qualquer sistema de coordenadas, sem as amarras do shapefile.
Regra prática: trabalhe em GeoPackage, entregue em shapefile quando exigirem, compartilhe em KML com quem usa Google Earth e use GeoJSON em sistemas web.
Comparação rápida
| Shapefile | KML / KMZ | GeoJSON | GeoPackage | |
|---|---|---|---|---|
| Origem | Esri (anos 1990), especificação aberta | Google Earth; padrão OGC desde 2008 | Comunidade; padronizado pela IETF (RFC 7946, 2016) | Padrão OGC (2014) |
| Arquivos | Vários (.shp, .shx, .dbf, .prj…) |
Um (.kml) ou um compactado (.kmz) |
Um (.geojson ou .json) |
Um (.gpkg) |
| Sistema de coordenadas | Qualquer, declarado no .prj |
Graus, WGS 84 | Graus, WGS 84 | Qualquer |
| Camadas por arquivo | Uma | Várias (pastas) | Uma coleção | Várias, inclusive raster |
| Tipos de geometria | Um tipo por arquivo | Misturados | Misturados | Um tipo por camada |
| Nome de campo | Até 10 caracteres | Livre | Livre | Livre |
| Valores nulos | Não suporta | Não se aplica | Suporta | Suporta |
| Data e hora | Só data | Texto/carimbo de tempo | Texto | Data e data-hora |
| Tamanho máximo | 2 GB por arquivo componente | Sem limite formal, mas pesa no Google Earth | Sem limite formal, mas fica lento | Sem o limite de 2 GB |
| Estilo (cor, ícone) | Não guarda | Guarda | Não guarda (há convenções informais) | Pode guardar estilos do QGIS |
| Melhor uso | Entrega a órgãos e sistemas legados | Visualização no Google Earth | Web, APIs, sistemas online | Trabalho técnico e arquivo do projeto |
Shapefile: o padrão de fato, com limitações
O shapefile foi criado pela Esri e virou o formato de troca mais comum entre sistemas de SIG. Quase todo órgão ambiental, o CAR e muitas plataformas de bancos e tradings recebem e entregam dados nele. Essa onipresença é a principal razão para continuar usando.
As limitações, documentadas pela própria Esri, aparecem o tempo todo no trabalho com imóveis rurais:
- Vários arquivos.
.shp,.shxe.dbfsão obrigatórios; o.prjé opcional na especificação, mas sem ele ninguém sabe em que sistema estão as coordenadas. Mandar só o.shpé o erro mais comum. Compacte tudo em.zip. - Nomes de campo com até 10 caracteres.
situacao_cadastrovirasituacao_c. Se dois campos começam igual, o programa precisa renomear um deles (situacao_1), e o significado se perde. - 2 GB por arquivo componente. Segundo a Esri, isso equivale a algo em torno de 70 milhões de pontos. Para bases nacionais de polígonos detalhados (CAR de um estado grande, por exemplo), o limite pode ser atingido.
- Sem valores nulos. Ao gravar em shapefile, campos vazios viram 0 em números e espaço em branco em textos. Para uma análise, "área = 0" e "área não informada" são coisas diferentes.
- Data sem hora. O campo de data guarda só dia, mês e ano. A Esri recomenda evitar shapefile em análises temporais.
- Números gravados como texto. O
.dbfarmazena números em formato de caracteres, o que pode gerar arredondamentos em valores decimais. - Texto com até 254 bytes por campo. Em UTF-8, letras acentuadas ocupam 2 bytes, então o limite em caracteres pode ser menor.
- Codificação. O padrão dBASE não registra a codificação dos textos. Se o
.cpgnão acompanha o arquivo, acentos podem quebrar ao abrir em outro programa. - Um tipo de geometria por arquivo. Pontos, linhas e polígonos precisam de shapefiles separados.
Nenhuma dessas limitações impede o uso, mas todas pedem atenção. Se você vai entregar em shapefile, revise os nomes de campo antes de exportar e mande o .prj e o .cpg junto.
KML e KMZ: feito para o Google Earth
O KML (Keyhole Markup Language) nasceu no Google Earth e foi adotado como padrão pelo OGC. É um XML com a geometria, o estilo (cor, espessura, ícone) e informações descritivas de cada feição. O KMZ é o mesmo conteúdo compactado.
Pontos fortes:
- Abre com dois cliques no Google Earth, sem nenhum software de SIG. É o jeito mais simples de mostrar a área para um produtor, um advogado ou um gerente de crédito.
- Guarda estilo junto com o dado.
- É um arquivo só.
Limitações:
- Sempre em graus, WGS 84. Não há como guardar o dado em UTM. Quem converte de UTM para KML precisa reprojetar.
- Atributos pouco estruturados. Muitos KML guardam os dados em HTML dentro da descrição. Ao abrir no QGIS, eles podem virar uma coluna de texto única.
- Desempenho. Arquivos com muitas feições ou vértices deixam o Google Earth lento. Na versão web, a importação como feições de projeto tem limite de 10.000 feições ou 250.000 vértices.
Use KML para comunicação visual, não para análise.
GeoJSON: o formato da web
O GeoJSON é um JSON com geometrias e propriedades, padronizado pela IETF na RFC 7946. É o que a maioria das APIs e bibliotecas de mapa na web lê e escreve.
O ponto que mais confunde: pela RFC 7946, as coordenadas são sempre longitude e latitude, em graus decimais, no WGS 84, nessa ordem (primeiro longitude, depois latitude). O membro crs, que existia na versão anterior da especificação, foi removido. Programas que gravam GeoJSON em UTM estão fora do padrão.
A mesma RFC observa que seis casas decimais nas coordenadas correspondem a cerca de 10 centímetros, o que é suficiente para limites de imóvel. Arquivos exportados com 15 casas decimais só ficam mais pesados.
Outro detalhe: no GeoJSON a ordem é [longitude, latitude], enquanto o Google Maps e a maioria das pessoas escrevem "latitude, longitude". Inverter os dois é um erro clássico ao montar GeoJSON à mão.
Use GeoJSON para integrar sistemas, alimentar mapas web e trocar dados com desenvolvedores. Para bases grandes, ele fica pesado, porque é texto.
Faça essa checagem na sua área
Desenhe ou importe o polígono (KML, shapefile, GeoJSON, GeoPackage) e gere o relatório: cada camada mostra se sobrepõe a área, se está a até 10 km ou se não há nada por perto.
GeoPackage: o formato mais completo para trabalho técnico
O GeoPackage (.gpkg) é um padrão aberto do OGC baseado em SQLite. Na prática, é um banco de dados em um arquivo só.
Vantagens:
- Várias camadas em um arquivo. O limite do imóvel, o CAR, as APPs, os pontos de nascente e até imagens raster podem ficar juntos no mesmo
.gpkg. - Qualquer sistema de coordenadas. Cada camada guarda o seu.
- Sem as amarras do shapefile. Nomes de campo longos, valores nulos, data e hora, textos longos em UTF-8 e sem o teto de 2 GB por arquivo.
- Estilos do QGIS. O QGIS consegue salvar o estilo da camada dentro do próprio GeoPackage.
Limitações: o Google Earth não abre GeoPackage, e alguns sistemas legados e plataformas de órgãos públicos ainda não aceitam. Nesses casos, exporte a camada necessária para shapefile ou KML na hora da entrega.
O QGIS usa o GeoPackage como formato padrão ao salvar camadas novas.
Qual formato usar em cada situação
| Situação | Formato recomendado | Por quê |
|---|---|---|
| Mandar a área para o cliente ver no celular ou no Google Earth | KMZ | Abre sem software de SIG, guarda cor e nome |
| Entregar para órgão ambiental, CAR ou sistema que pede shapefile | Shapefile em .zip com .prj e .cpg |
É o formato exigido |
| Guardar o projeto de análise de um imóvel | GeoPackage | Todas as camadas e estilos num arquivo só |
| Integrar com um sistema web ou API | GeoJSON | É o padrão da web |
| Base grande (estado inteiro) para análise | GeoPackage | Sem limite de 2 GB, consulta rápida |
| Trocar dados com quem usa ArcGIS | Shapefile ou GeoPackage | Ambos abrem no ArcGIS Pro |
Como converter entre formatos
No QGIS
- Carregue a camada.
- Botão direito > Exportar > Salvar feições como.
- Escolha o Formato (ESRI Shapefile, GeoPackage, GeoJSON, Keyhole Markup Language).
- Escolha o SRC. Para KML e GeoJSON, o QGIS grava em WGS 84 de qualquer forma.
- Em Codificação, prefira
UTF-8. - Clique em OK.
Ao exportar para shapefile, revise antes os nomes de campo com mais de 10 caracteres para controlar como eles serão cortados.
Pela linha de comando (GDAL)
Quem processa muitos arquivos pode usar o ogr2ogr, que vem com o QGIS:
# shapefile para GeoPackage
ogr2ogr -f GPKG imovel.gpkg imovel.shp
# GeoPackage para KML (reprojeta para WGS 84)
ogr2ogr -f KML imovel.kml imovel.gpkg -t_srs EPSG:4326
# KML para shapefile em SIRGAS 2000 / UTM 22S
ogr2ogr -f "ESRI Shapefile" imovel_utm.shp imovel.kml -t_srs EPSG:31982 -lco ENCODING=UTF-8
Sem instalar nada
Para conversões pontuais, as ferramentas gratuitas do ilovegis rodam no navegador: KML para shapefile e shapefile para KML. O shapefile gerado sai com .prj em SIRGAS 2000 e .cpg em UTF-8, o que evita os dois problemas mais comuns na hora de abrir em outro programa.
Cuidados que valem para qualquer formato
- Confira o sistema de coordenadas antes de converter. Converter um arquivo com
.prjerrado só propaga o erro. Veja SIRGAS 2000, datum e conversão. - Não confie em área calculada em graus. Para medir hectares, use uma projeção métrica adequada, como UTM na zona certa. O guia de coordenadas UTM no Brasil explica como escolher. A ferramenta calcular área ajuda a conferir.
- Mantenha o original. Guarde o arquivo recebido intacto e trabalhe sobre uma cópia.
- Registre a fonte e a data. Em laudos e pareceres, o formato importa menos do que saber de onde veio a camada e quando foi baixada.
Camadas prontas em vários formatos
No ilovegis, as camadas públicas usadas na análise de imóveis rurais, como CAR de Mato Grosso, embargos do IBAMA e terras indígenas, podem ser vistas no mapa e, no plano Profissional, baixadas em shapefile, GeoPackage, GeoJSON ou KML, já padronizadas. Para abrir os arquivos baixados, veja como abrir shapefile no QGIS e no Google Earth.