Exemplos para trabalhar com arquivos kml/kmz brutos exportados do aplicativo.
Esta página fornece exemplos de pós-processamento de arquivos kmz/kml que você pode achar úteis.
Preparação:
- Exportar do GPS Camera: Exportar pontos como KMZ/KML
- Extrair KML: Descompactar KMZ se necessário
Atualizando nomes de Placemark KML a partir de imageNotes
Este guia demonstra como atualizar automaticamente os nomes de placemark em seus arquivos KML extraindo informações do campo imageNotes.
Visão geral
Ao exportar pontos do GPS Camera, o aplicativo cria arquivos KML com nomes de placemark baseados em títulos de fotos e pontos. O conteúdo das notas (como “Note 1”, “Note 2”, etc.) é armazenado no campo imageNotes como valores separados por tabulação. Este script permite extrair automaticamente essas informações de notas e usá-las como nome de placemark, se necessário.
Provavelmente é melhor apenas colocar suas notas no campo Título enquanto tira fotos. Este script serviria se você não estivesse fazendo isso e também como exemplo de pós-processamento de kml.
Caso de uso
Antes:
- Nomes de placemark mostram carimbos de data/hora:
15Nov25 16:25,12Nov25 17:24 - Notas reais estão ocultas no campo
imageNotes:Note 1,Note 2
Depois:
- Nomes de placemark mostram notas significativas:
Note 1,Note 2 - Fácil identificação de pontos rapidamente em aplicativos de mapeamento
Estrutura do arquivo KML
O arquivo KML exportado contém placemarks com a seguinte estrutura:
<Placemark>
<name>15Nov25 16:25</name>
<ExtendedData>
<SchemaData schemaUrl="#blcPointSchema">
<SimpleData name="imageNotes"><![CDATA[15Nov25 16:25 Note 1 Ad-hoc V Třešňovce 227/12...]]></SimpleData>
</SchemaData>
</ExtendedData>
<Point>
<coordinates>14.502834,50.095184,239.0</coordinates>
</Point>
</Placemark>
O campo imageNotes contém valores separados por tabulação:
- Campo 0: Carimbo de data/hora (
15Nov25 16:25) - Campo 1: Texto da nota (
Note 1) ← Isto é o que extraímos - Campo 2: Vazio
- Campo 3: Tipo (
Ad-hoc) - Campo 4: Endereço
Solução: Script Python
Criamos um script Python que processa automaticamente arquivos KML e atualiza nomes de placemark com base no conteúdo de imageNotes.
Recursos do script
- Extração automática: Analisa campo
imageNotesseparado por tabulação - Baseado em posição: Extrai nota de uma posição de campo específica (padrão: posição 1)
- Genérico: Funciona com qualquer arquivo KML seguindo esta estrutura
- Seguro: Cria backups antes de sobrescrever arquivos
- Flexível: Pode gerar para um novo arquivo ou atualizar no local
Como funciona
- Analisar arquivo KML: Lê a estrutura XML
- Encontrar placemarks: Localiza todos os elementos
<Placemark> - Extrair notas: Divide
imageNotespor caractere de tabulação e obtém a nota na posição 1 - Atualizar nomes: Substitui todo o elemento
<name>pela nota extraída - Salvar saída: Escreve KML atualizado no arquivo
Instalação e uso
Pré-requisitos
- Python 3 (pré-instalado no macOS, baixar de python.org para Windows)
- Nenhuma biblioteca adicional necessária (usa apenas biblioteca padrão)
Guia passo a passo
1. Baixar o script
Baixe update_kml_names.py e coloque-o na mesma pasta que seu arquivo KML.
2. Executar o script
macOS / Linux:
# Navegar para a pasta contendo seu arquivo KML
cd ~/Downloads/Points_20251115_163211
# Executar o script (cria backup, atualiza o original)
python3 update_kml_names.py doc.kml
# Ou criar um novo arquivo de saída (mantém o original)
python3 update_kml_names.py doc.kml updated_points.kml
Windows:
# Navegar para a pasta contendo seu arquivo KML
cd %USERPROFILE%\Downloads\Points_20251115_163211
# Executar o script (cria backup, atualiza o original)
python update_kml_names.py doc.kml
# Ou criar um novo arquivo de saída (mantém o original)
python update_kml_names.py doc.kml updated_points.kml
3. Ver resultados
O script exibirá as atualizações:
Updated: '15Nov25 16:25' -> 'Note 1'
Updated: '12Nov25 17:24' -> 'Note 2'
Completed! Updated 2 placemark(s).
Output saved to: doc.kml
Uso avançado
Posição de nota personalizada
Se seu campo imageNotes tiver uma estrutura diferente e a nota estiver em uma posição diferente, você pode especificá-la:
# Extrair nota da posição 2 (terceiro campo, indexado a partir de 0)
python3 update_kml_names.py doc.kml output.kml 2
Processamento em lote
Você pode processar vários arquivos KML usando um script simples:
macOS / Linux:
for file in *.kml; do
python3 update_kml_names.py "$file"
done
Windows (PowerShell):
Get-ChildItem -Filter *.kml | ForEach-Object {
python update_kml_names.py $_.Name
}
Exemplo: Antes e depois
Antes do processamento
<Placemark>
<name>15Nov25 16:25</name>
<SimpleData name="imageNotes">15Nov25 16:25 Note 1 Ad-hoc Address...</SimpleData>
</Placemark>
<Placemark>
<name>12Nov25 17:24</name>
<SimpleData name="imageNotes">12Nov25 17:24 Note 2 Ad-hoc Address...</SimpleData>
</Placemark>
Após o processamento
<Placemark>
<name>Note 1</name>
<SimpleData name="imageNotes">15Nov25 16:25 Note 1 Ad-hoc Address...</SimpleData>
</Placemark>
<Placemark>
<name>Note 2</name>
<SimpleData name="imageNotes">12Nov25 17:24 Note 2 Ad-hoc Address...</SimpleData>
</Placemark>
Detalhes técnicos
Implementação do script
O script usa o analisador XML integrado do Python (xml.etree.ElementTree) para:
- Analisar arquivos KML com manipulação adequada de namespace
- Navegar pela estrutura XML para encontrar elementos de placemark
- Extrair e processar valores separados por tabulação
- Atualizar elementos preservando a estrutura do arquivo
Compatibilidade
- Versão KML: 2.2 (formato padrão)
- Versão Python: 3.6+
- Sistemas operacionais: macOS, Windows, Linux
- Aplicativos: Compatível com Google Earth, QGIS, ArcGIS e outros aplicativos que suportam KML
Solução de problemas
Problema: Script não encontrado
Causa: Python não instalado ou não no PATH do sistema
Solução:
- macOS: Python 3 deve estar pré-instalado
- Windows: Baixar de python.org e garantir que “Add to PATH” esteja marcado durante a instalação
Problema: Nomes vazios após atualização
Causa: Campo de nota está vazio ou na posição errada
Solução: O script mostrará um aviso. Verifique o formato do seu imageNotes e ajuste o parâmetro de posição.
Integração com seu fluxo de trabalho
Este script pode ser integrado em fluxos de trabalho automatizados:
- Exportar do GPS Camera: Exportar pontos como KMZ/KML
- Extrair KML: Descompactar KMZ se necessário
- Executar script: Processar KML para atualizar nomes
- Importar para GIS: Usar no Google Earth, QGIS ou outras ferramentas
Código fonte
#!/usr/bin/env python3
"""
Script to update KML placemark names with Note from imageNotes field.
Extracts the note from the tab-separated imageNotes field (position 2) and replaces the placemark name.
"""
import xml.etree.ElementTree as ET
import sys
import os
def update_kml_with_notes(input_file, output_file=None, note_position=1):
"""
Update KML placemark names by extracting Note from tab-separated imageNotes field.
Args:
input_file: Path to input KML file
output_file: Path to output KML file (if None, overwrites input)
note_position: Position of the note in tab-separated imageNotes (0-indexed, default 1)
"""
# Parse the KML file
tree = ET.parse(input_file)
root = tree.getroot()
# Define namespace
ns = {'kml': 'http://www.opengis.net/kml/2.2'}
# Find all Placemark elements
placemarks = root.findall('.//kml:Placemark', ns)
updated_count = 0
for placemark in placemarks:
# Get the current name
name_elem = placemark.find('kml:name', ns)
if name_elem is None:
continue
current_name = name_elem.text
# Find the imageNotes field
image_notes_elem = placemark.find('.//kml:SimpleData[@name="imageNotes"]', ns)
if image_notes_elem is not None and image_notes_elem.text:
image_notes = image_notes_elem.text
# Split by tab to get the note (tab-separated format)
parts = image_notes.split('\t')
if len(parts) > note_position and parts[note_position].strip():
note_text = parts[note_position].strip()
# Update the name - replace entirely with the note
name_elem.text = note_text
print(f"Updated: '{current_name}' -> '{note_text}'")
updated_count += 1
else:
print(f"Warning: No note found at position {note_position} in imageNotes for placemark '{current_name}'")
print(f" imageNotes content: {image_notes}")
else:
print(f"Warning: No imageNotes found for placemark '{current_name}'")
# Determine output file
if output_file is None:
output_file = input_file
# Write the updated KML
tree.write(output_file, encoding='utf-8', xml_declaration=True)
print(f"\nCompleted! Updated {updated_count} placemark(s).")
print(f"Output saved to: {output_file}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python3 update_kml_names.py <input_kml_file> [output_kml_file] [note_position]")
print("\nArguments:")
print(" input_kml_file: Path to the KML file to process")
print(" output_kml_file: (Optional) Output file path. If not provided, input will be overwritten.")
print(" note_position: (Optional) 0-indexed position of note in tab-separated imageNotes (default: 1)")
print("\nExample:")
print(" python3 update_kml_names.py doc.kml")
print(" python3 update_kml_names.py doc.kml doc_updated.kml")
print(" python3 update_kml_names.py doc.kml doc_updated.kml 1")
sys.exit(1)
input_file = sys.argv[1]
output_file = sys.argv[2] if len(sys.argv) > 2 else None
note_position = int(sys.argv[3]) if len(sys.argv) > 3 else 1
if not os.path.exists(input_file):
print(f"Error: Input file '{input_file}' not found.")
sys.exit(1)
# Create backup if overwriting
if output_file is None:
backup_file = input_file + '.backup'
import shutil
shutil.copy2(input_file, backup_file)
print(f"Backup created: {backup_file}\n")
update_kml_with_notes(input_file, output_file, note_position)
Suporte
Para perguntas ou problemas:
- Verifique se o Python 3 está instalado corretamente
- Verifique se
imageNotescontém valores separados por tabulação
Licença
Este script é fornecido como está para uso com exportações de aplicativos. Sinta-se à vontade para modificá-lo e adaptá-lo às suas necessidades específicas.
Documentação relacionada
Exportar e importar
- Opções de compartilhamento de fotos/pontos - Aprenda como exportar pontos nos formatos KMZ, KML, GPX e CSV
- Organizar pontos em coleções - Entenda a estrutura de dados antes de exportar
Trabalhando com Google Earth
- Ajustes e personalizações do Google Earth - Personalizar arquivos KMZ no Google Earth, estilos de balões e acesso a KML bruto
Fluxos de trabalho relacionados
- Personalizar nomes de arquivo para exportações em lote - Automatizar nomenclatura de arquivos em scripts de processamento em lote
- Backup de configurações para automação de fluxo de trabalho - Gerenciar perfis de fluxo de trabalho programaticamente
- Importar fotos com dados de localização - Completar o fluxo de trabalho de exportar/processar/importar
Última atualização: Novembro 2025