Ejemplos para trabajar con archivos kml/kmz sin procesar exportados desde la aplicación.
Esta página proporciona ejemplos de posprocesamiento de archivos kmz/kml que pueden resultarle útiles.
Preparación:
- Exportar desde GPS Camera: Exportar puntos como KMZ/KML
- Extraer KML: Descomprimir KMZ si es necesario
Actualización de nombres de Placemark KML desde imageNotes
Esta guía demuestra cómo actualizar automáticamente los nombres de placemark en sus archivos KML extrayendo información del campo imageNotes.
Descripción general
Al exportar puntos desde GPS Camera, la aplicación crea archivos KML con nombres de placemark basados en títulos de fotos y puntos. El contenido de notas (como “Note 1”, “Note 2”, etc.) se almacena en el campo imageNotes como valores separados por tabuladores. Este script le permite extraer automáticamente esa información de notas y usarla como nombre de placemark, si es necesario.
Probablemente sea mejor simplemente poner sus notas en el campo Título mientras toma fotos. Este script serviría si no lo estuviera haciendo y también como ejemplo de posprocesamiento de kml.
Caso de uso
Antes:
- Los nombres de placemark muestran marcas de tiempo:
15Nov25 16:25,12Nov25 17:24 - Las notas reales están ocultas en el campo
imageNotes:Note 1,Note 2
Después:
- Los nombres de placemark muestran notas significativas:
Note 1,Note 2 - Fácil identificación de puntos de un vistazo en aplicaciones de mapas
Estructura de archivos KML
El archivo KML exportado contiene placemarks con la siguiente estructura:
<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>
El campo imageNotes contiene valores separados por tabuladores:
- Campo 0: Marca de tiempo (
15Nov25 16:25) - Campo 1: Texto de nota (
Note 1) ← Esto es lo que extraemos - Campo 2: Vacío
- Campo 3: Tipo (
Ad-hoc) - Campo 4: Dirección
Solución: Script de Python
Hemos creado un script de Python que procesa automáticamente archivos KML y actualiza los nombres de placemark según el contenido de imageNotes.
Características del script
- Extracción automática: Analiza el campo
imageNotesseparado por tabuladores - Basado en posición: Extrae notas de una posición de campo específica (predeterminado: posición 1)
- Genérico: Funciona con cualquier archivo KML que siga esta estructura
- Seguro: Crea copias de seguridad antes de sobrescribir archivos
- Flexible: Puede generar a un nuevo archivo o actualizar en el lugar
Cómo funciona
- Analizar archivo KML: Lee la estructura XML
- Encontrar placemarks: Localiza todos los elementos
<Placemark> - Extraer notas: Divide
imageNotespor carácter de tabulación y obtiene la nota en la posición 1 - Actualizar nombres: Reemplaza todo el elemento
<name>con la nota extraída - Guardar salida: Escribe KML actualizado en archivo
Instalación y uso
Requisitos previos
- Python 3 (preinstalado en macOS, descargar desde python.org para Windows)
- No se requieren bibliotecas adicionales (usa solo la biblioteca estándar)
Guía paso a paso
1. Descargar el script
Descargue update_kml_names.py y colóquelo en la misma carpeta que su archivo KML.
2. Ejecutar el script
macOS / Linux:
# Navegar a la carpeta que contiene su archivo KML
cd ~/Downloads/Points_20251115_163211
# Ejecutar el script (crea copia de seguridad, actualiza el original)
python3 update_kml_names.py doc.kml
# O crear un nuevo archivo de salida (mantiene el original)
python3 update_kml_names.py doc.kml updated_points.kml
Windows:
# Navegar a la carpeta que contiene su archivo KML
cd %USERPROFILE%\Downloads\Points_20251115_163211
# Ejecutar el script (crea copia de seguridad, actualiza el original)
python update_kml_names.py doc.kml
# O crear un nuevo archivo de salida (mantiene el original)
python update_kml_names.py doc.kml updated_points.kml
3. Ver resultados
El script mostrará las actualizaciones:
Updated: '15Nov25 16:25' -> 'Note 1'
Updated: '12Nov25 17:24' -> 'Note 2'
Completed! Updated 2 placemark(s).
Output saved to: doc.kml
Uso avanzado
Posición de nota personalizada
Si su campo imageNotes tiene una estructura diferente y la nota está en una posición diferente, puede especificarla:
# Extraer nota de la posición 2 (tercer campo, indexado desde 0)
python3 update_kml_names.py doc.kml output.kml 2
Procesamiento por lotes
Puede procesar múltiples archivos KML usando un script simple:
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
}
Ejemplo: Antes y después
Antes del procesamiento
<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>
Después del procesamiento
<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>
Detalles técnicos
Implementación del script
El script utiliza el analizador XML integrado de Python (xml.etree.ElementTree) para:
- Analizar archivos KML con manejo adecuado del espacio de nombres
- Navegar por la estructura XML para encontrar elementos de placemark
- Extraer y procesar valores separados por tabuladores
- Actualizar elementos mientras se preserva la estructura del archivo
Compatibilidad
- Versión KML: 2.2 (formato estándar)
- Versión Python: 3.6+
- Sistemas operativos: macOS, Windows, Linux
- Aplicaciones: Compatible con Google Earth, QGIS, ArcGIS y otras aplicaciones que soportan KML
Solución de problemas
Problema: Script no encontrado
Causa: Python no instalado o no en el PATH del sistema
Solución:
- macOS: Python 3 debería estar preinstalado
- Windows: Descargar desde python.org y asegurarse de que “Add to PATH” esté marcado durante la instalación
Problema: Nombres vacíos después de la actualización
Causa: El campo de nota está vacío o en la posición incorrecta
Solución: El script mostrará una advertencia. Verifique el formato de su imageNotes y ajuste el parámetro de posición.
Integración con su flujo de trabajo
Este script se puede integrar en flujos de trabajo automatizados:
- Exportar desde GPS Camera: Exportar puntos como KMZ/KML
- Extraer KML: Descomprimir KMZ si es necesario
- Ejecutar script: Procesar KML para actualizar nombres
- Importar a GIS: Usar en Google Earth, QGIS u otras herramientas
Código fuente
#!/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)
Soporte
Para preguntas o problemas:
- Verifique que Python 3 esté instalado correctamente
- Compruebe que
imageNotescontiene valores separados por tabuladores
Licencia
Este script se proporciona tal cual para uso con exportaciones de la aplicación. Siéntase libre de modificarlo y adaptarlo a sus necesidades específicas.
Documentación relacionada
Exportar e importar
- Opciones de compartir fotos/puntos - Aprenda cómo exportar puntos en formatos KMZ, KML, GPX y CSV
- Organizar puntos en colecciones - Comprenda la estructura de datos antes de exportar
Trabajar con Google Earth
- Ajustes y personalizaciones de Google Earth - Personalizar archivos KMZ en Google Earth, estilos de globos y acceder a KML sin procesar
Flujos de trabajo relacionados
- Personalizar nombres de archivo para exportaciones por lotes - Automatizar nombres de archivo en scripts de procesamiento por lotes
- Copia de seguridad de configuración para automatización de flujo de trabajo - Gestionar perfiles de flujo de trabajo programáticamente
- Importar fotos con datos de ubicación - Completar el flujo de trabajo de exportar/procesar/importar
Última actualización: Noviembre 2025