Exemples de travail avec des fichiers kml/kmz bruts exportés depuis l'application.
Cette page fournit des exemples de post-traitement de fichiers kmz/kml qui pourraient vous être utiles.
Préparation:
- Exporter depuis GPS Camera: Exporter les points en KMZ/KML
- Extraire KML: Décompresser KMZ si nécessaire
Mise à jour des noms de repères KML à partir d’imageNotes
Ce guide montre comment mettre à jour automatiquement les noms de repères dans vos fichiers KML en extrayant des informations du champ imageNotes.
Vue d’ensemble
Lors de l’exportation de points depuis GPS Camera, l’application crée des fichiers KML avec des noms de repères basés sur les titres de photos et de points. Le contenu des notes (comme “Note 1”, “Note 2”, etc.) est stocké dans le champ imageNotes sous forme de valeurs séparées par des tabulations. Ce script vous permet d’extraire automatiquement ces informations de notes et de les utiliser comme nom de repère, si nécessaire.
Il est probablement préférable de simplement mettre vos notes dans le champ Titre lorsque vous prenez des photos. Ce script servirait si vous ne le faisiez pas et également comme exemple de post-traitement kml.
Cas d’utilisation
Avant:
- Les noms de repères affichent des horodatages:
15Nov25 16:25,12Nov25 17:24 - Les notes réelles sont cachées dans le champ
imageNotes:Note 1,Note 2
Après:
- Les noms de repères affichent des notes significatives:
Note 1,Note 2 - Identification facile des points en un coup d’œil dans les applications cartographiques
Structure du fichier KML
Le fichier KML exporté contient des repères avec la structure suivante:
<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>
Le champ imageNotes contient des valeurs séparées par des tabulations:
- Champ 0: Horodatage (
15Nov25 16:25) - Champ 1: Texte de la note (
Note 1) ← C’est ce que nous extrayons - Champ 2: Vide
- Champ 3: Type (
Ad-hoc) - Champ 4: Adresse
Solution: Script Python
Nous avons créé un script Python qui traite automatiquement les fichiers KML et met à jour les noms de repères en fonction du contenu d'imageNotes.
Fonctionnalités du script
- Extraction automatique: Analyse le champ
imageNotesséparé par des tabulations - Basé sur la position: Extrait la note d’une position de champ spécifique (par défaut: position 1)
- Générique: Fonctionne avec tout fichier KML suivant cette structure
- Sûr: Crée des sauvegardes avant d’écraser les fichiers
- Flexible: Peut générer vers un nouveau fichier ou mettre à jour sur place
Comment ça marche
- Analyser le fichier KML: Lit la structure XML
- Trouver les repères: Localise tous les éléments
<Placemark> - Extraire les notes: Divise
imageNotespar caractère de tabulation et obtient la note à la position 1 - Mettre à jour les noms: Remplace l’élément
<name>entier par la note extraite - Enregistrer la sortie: Écrit le KML mis à jour dans le fichier
Installation et utilisation
Prérequis
- Python 3 (préinstallé sur macOS, télécharger depuis python.org pour Windows)
- Aucune bibliothèque supplémentaire requise (utilise uniquement la bibliothèque standard)
Guide étape par étape
1. Télécharger le script
Téléchargez update_kml_names.py et placez-le dans le même dossier que votre fichier KML.
2. Exécuter le script
macOS / Linux:
# Naviguer vers le dossier contenant votre fichier KML
cd ~/Downloads/Points_20251115_163211
# Exécuter le script (crée une sauvegarde, met à jour l'original)
python3 update_kml_names.py doc.kml
# Ou créer un nouveau fichier de sortie (conserve l'original)
python3 update_kml_names.py doc.kml updated_points.kml
Windows:
# Naviguer vers le dossier contenant votre fichier KML
cd %USERPROFILE%\Downloads\Points_20251115_163211
# Exécuter le script (crée une sauvegarde, met à jour l'original)
python update_kml_names.py doc.kml
# Ou créer un nouveau fichier de sortie (conserve l'original)
python update_kml_names.py doc.kml updated_points.kml
3. Voir les résultats
Le script affichera les mises à jour:
Updated: '15Nov25 16:25' -> 'Note 1'
Updated: '12Nov25 17:24' -> 'Note 2'
Completed! Updated 2 placemark(s).
Output saved to: doc.kml
Utilisation avancée
Position de note personnalisée
Si votre champ imageNotes a une structure différente et que la note est à une position différente, vous pouvez la spécifier:
# Extraire la note de la position 2 (troisième champ, indexé à partir de 0)
python3 update_kml_names.py doc.kml output.kml 2
Traitement par lots
Vous pouvez traiter plusieurs fichiers KML en utilisant 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
}
Exemple: Avant et après
Avant le traitement
<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>
Après le traitement
<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>
Détails techniques
Implémentation du script
Le script utilise l’analyseur XML intégré de Python (xml.etree.ElementTree) pour:
- Analyser les fichiers KML avec une gestion appropriée des espaces de noms
- Naviguer dans la structure XML pour trouver les éléments de repère
- Extraire et traiter les valeurs séparées par des tabulations
- Mettre à jour les éléments tout en préservant la structure du fichier
Compatibilité
- Version KML: 2.2 (format standard)
- Version Python: 3.6+
- Systèmes d’exploitation: macOS, Windows, Linux
- Applications: Compatible avec Google Earth, QGIS, ArcGIS et autres applications prenant en charge KML
Dépannage
Problème: Script introuvable
Cause: Python non installé ou absent du PATH système
Solution:
- macOS: Python 3 devrait être préinstallé
- Windows: Télécharger depuis python.org et s’assurer que “Add to PATH” est coché lors de l’installation
Problème: Noms vides après la mise à jour
Cause: Le champ de note est vide ou à la mauvaise position
Solution: Le script affichera un avertissement. Vérifiez le format de votre imageNotes et ajustez le paramètre de position.
Intégration dans votre flux de travail
Ce script peut être intégré dans des flux de travail automatisés:
- Exporter depuis GPS Camera: Exporter les points en KMZ/KML
- Extraire KML: Décompresser KMZ si nécessaire
- Exécuter le script: Traiter KML pour mettre à jour les noms
- Importer dans GIS: Utiliser dans Google Earth, QGIS ou d’autres outils
Code source
#!/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)
Support
Pour les questions ou problèmes:
- Vérifiez que Python 3 est correctement installé
- Vérifiez que
imageNotescontient des valeurs séparées par des tabulations
Licence
Ce script est fourni tel quel pour une utilisation avec les exportations d’applications. N’hésitez pas à le modifier et à l’adapter à vos besoins spécifiques.
Documentation connexe
Exporter et importer
- Options de partage de photos/points - Apprenez à exporter des points aux formats KMZ, KML, GPX et CSV
- Organiser les points en collections - Comprendre la structure des données avant l’exportation
Travailler avec Google Earth
- Ajustements et personnalisations Google Earth - Personnaliser les fichiers KMZ dans Google Earth, styles de bulles et accès au KML brut
Flux de travail connexes
- Personnaliser les noms de fichiers pour les exportations par lots - Automatiser la dénomination des fichiers dans les scripts de traitement par lots
- Sauvegarde des paramètres pour l’automatisation du flux de travail - Gérer les profils de flux de travail par programmation
- Importer des photos avec des données de localisation - Compléter le flux de travail exporter/traiter/importer
Dernière mise à jour: Novembre 2025