KML

O que é um arquivo KML?

O formato do Google Earth e do Maps para pontos, linhas e áreas.

O que é KML

KML é um formato de texto puro que abre em qualquer editor. Ele é usado para mapas.

A extensão é .kml e o nome por extenso é Keyhole Markup Language. Os dois importam menos do que aquilo que o arquivo consegue carregar, e é disso que trata o resto desta página.

De onde vem KML

Ele vem da Keyhole. A especificação é OGC KML 2.3.

A idade interessa por um motivo prático: quanto mais antigo o formato, mais programas tiveram tempo de aprendê-lo.

A especificação é pública

Ela está publicada por inteiro, então dá para implementá-la a partir do documento em vez de por observação — é por isso que o formato aparece em tantos programas e por isso que arquivos escritos há vinte anos ainda abrem. Especificação publicada não é o mesmo que livre de royalties: quando o formato embrulha um codec, o licenciamento das patentes é uma questão à parte, que a norma não resolve.

Nada é jogado fora

KML guarda o conteúdo exatamente. Salvar de novo não muda nada, então dá para abrir, editar e salvar quantas vezes você quiser sem acumular estrago — e é isso que faz dele um formato de trabalho e não de entrega.

O que abre KML

Google Earth, QGIS e ArcGIS leem esse formato, e a maioria dos programas do mesmo tipo também.

Quando um arquivo não abre, o formato raramente é o problema — mais comum é o programa ser mais antigo que ele. Converter para algo mais antigo é o caminho confiável, e é para isso que serve o resto deste site.

Abrir no navegador

Nenhum navegador lê o formato.

Esse é de longe o motivo mais comum para convertê-lo: não que o formato seja ruim, mas que o lugar onde você quer mostrar o arquivo não consegue lê-lo.

É um formato de trabalho

KML foi feito para ser aberto e alterado. Mantenha o arquivo nesse formato enquanto o trabalho estiver em andamento e exporte a partir dele sempre que precisar de uma cópia pronta.

Um documento de mapa, não uma lista de coordenadas

KML descreve o que deve aparecer num mapa e como deve ficar. Um marcador com ícone e uma descrição que abre num balão ao clicar. Uma linha com cor e espessura. Um polígono com preenchimento, extrudado para cima até uma altura. Uma estrutura de pastas agrupando tudo isso, com cada camada podendo ser ligada ou desligada.

Isso faz dele um tipo diferente de coisa em relação ao GPX, que é uma lista de pontos medidos e nenhuma opinião sobre apresentação. Um KML também pode guardar uma trilha, mas o propósito dele é mostrar algo para alguém — por isso é o que o Google Earth e o Google Meu Mapa produzem, e por isso os arquivos que as pessoas compartilham tendem a ser KML.

KMZ é um KML compactado, e costuma ser o arquivo melhor

Um KMZ é um arquivo ZIP contendo um KML mais tudo que ele referencia — ícones personalizados, fotografias, imagens de sobreposição. Renomeie para .zip e qualquer descompactador abre.

É a forma mais prática para qualquer coisa com imagens, porque um KML solto apontando para fotos no seu próprio computador não mostra nada na máquina de outra pessoa. O XML também comprime bastante, então um conjunto de dados grande costuma ficar num quinto do tamanho. O Google Earth escreve KMZ por padrão exatamente por esses motivos, e descompactar para pegar o KML puro é uma operação de um passo quando alguma ferramenta insiste nisso.

Pontos, linhas e áreas

Três tipos de geometria cobrem quase tudo. Um ponto é um marcador — uma loja, um mirante, um marco de agrimensura. Uma linha é um caminho, uma fronteira ou uma rota. Um polígono é uma área: um imóvel, um distrito, uma zona de busca, um pedido de licenciamento.

Polígonos são onde o KML faz algo que o GPX não consegue. Uma área tem um interior, pode ter buracos, pode ser preenchida e ficar parcialmente transparente, e pode ser extrudada num bloco tridimensional. Qualquer coisa envolvendo território em vez de deslocamento quer esse formato, e traduzir um arquivo assim para um formato de trilha perde o conceito inteiro.

O estilo, e por que o arquivo tem tanto dele

Cores, ícones, espessura de linha, tamanho de rótulo e transparência estão todos no documento, e as cores são escritas numa ordem que pega todo mundo de surpresa: alfa, azul, verde, vermelho, o inverso da notação usual. Um tom que parece errado quase sempre é isso.

Os estilos podem ser definidos uma vez e referenciados por muitos elementos, o que mantém um arquivo com dois mil marcadores administrável. Também significa que uma reestilização em massa é uma mudança num lugar só — vale saber antes de alguém editar dois mil elementos manualmente.

Sobreposições de imagem e links de rede

Uma sobreposição de imagem fixa uma figura no mapa entre quatro coordenadas: um mapa histórico digitalizado, uma planta de local, uma foto aérea, um mapa de calor vindo de outro lugar. É o recurso que transforma o Google Earth de visualizador em algo onde dá para comparar coisas, e nenhum formato de atividade tem equivalente.

Um link de rede vai além e aponta o arquivo para uma URL, atualizando num intervalo definido. É assim que dados ao vivo entram no Google Earth — posição de veículos, clima, leituras de sensor — e significa que um KML pode ter poucas linhas e ainda mostrar um conjunto de dados constantemente atualizado. Também significa que um KML compartilhado pode não mostrar nada se aquilo que ele apontava não existir mais.

Colocando um KML em algo além do Google Earth

O Google Meu Mapa importa diretamente e é o jeito mais fácil de colocar um mapa compartilhado na web. O QGIS lê para qualquer trabalho analítico. A maioria dos softwares de SIG também lê, embora vários prefiram receber como GeoJSON ou Shapefile primeiro, que é a conversão usual nesse sentido.

O que praticamente nada faz é exibir diretamente — nenhum navegador abre um KML sozinho, e um cliente de e-mail vai oferecer para baixar e nada mais. Esse é o motivo padrão de conversão: não porque o formato seja deficiente, mas porque o lugar onde você quer mostrar não consegue lê-lo.

Convertendo entre KML e GPX

De GPX para KML é a direção direta: uma trilha vira uma linha, waypoints viram marcadores, e o estilo precisa ser fornecido porque a origem não tinha nenhum. O resultado é um arquivo que parece algo em vez de uma linha nua.

O sentido inverso perde o que o GPX não consegue expressar, que é a maior parte do que um KML representa — polígonos não têm equivalente, sobreposições e links de rede não têm nenhum, o estilo é descartado, e a estrutura de pastas se achata. Se o KML é realmente uma trilha, a conversão é limpa; se é um mapa, prepare-se para manter o original.

Os dados, num lugar só

Identificadores e procedência do formato KML.
Extensão.kml
Tipo de mídiaapplication/vnd.google-earth.kml+xml
Publicado porKeyhole
EspecificaçãoOGC KML 2.3

Arquivos KML: perguntas frequentes

Como abro um arquivo KML?

O Google Earth é o lar natural, e o Google Meu Mapa importa diretamente se você quer colocar na web. O QGIS abre para trabalho analítico. Nenhum navegador exibe um KML sozinho, e esse é o motivo usual de as pessoas converterem.

Qual a diferença entre KML e KMZ?

Um KMZ é um arquivo ZIP contendo o KML mais seus ícones, fotografias e imagens de sobreposição. É o arquivo melhor para compartilhar, já que um KML solto referenciando imagens locais não mostra nada em outra máquina, e a compressão é substancial.

Qual a diferença entre KML e GPX?

KML descreve um mapa — marcadores, linhas estilizadas, áreas preenchidas, sobreposições — e é o que o Google Earth fala. GPX descreve dados de atividade e navegação — waypoints, rotas e trilhas gravadas — e é o que os aparelhos de GPS falam. Converter um mapa para GPX perde a maior parte do que faz dele um mapa.

Por que minhas cores saem erradas?

O KML escreve cor como alfa, azul, verde, vermelho, o inverso da ordem hexadecimal usual. Um valor copiado de qualquer outro lugar sai com vermelho e azul trocados.

Um arquivo KML pode conter fotos?

Pode referenciá-las, e um KML solto apontando para imagens no seu próprio computador não vai mostrar nada para mais ninguém. Salve como KMZ, que embala as imagens dentro do arquivo.

Por que um KML compartilhado não mostra nada?

Ou ele referencia arquivos locais que não viajaram junto, ou usa um link de rede apontando para uma URL que não serve mais nada. O primeiro se resolve enviando um KMZ; o segundo não tem conserto pelo arquivo.