Beispiele für die Arbeit mit rohen kml/kmz-Dateien, die aus der App exportiert wurden.
Diese Seite bietet Beispiele für die Nachbearbeitung von kmz/kml-Dateien, die Sie nützlich finden könnten.
Vorbereitung:
- Export aus GPS Camera: Punkte als KMZ/KML exportieren
- KML extrahieren: KMZ bei Bedarf entpacken
Aktualisieren von KML-Placemark-Namen aus imageNotes
Dieser Leitfaden zeigt, wie Sie Placemark-Namen in Ihren KML-Dateien automatisch aktualisieren, indem Sie Informationen aus dem Feld imageNotes extrahieren.
Übersicht
Beim Exportieren von Punkten aus GPS Camera erstellt die App KML-Dateien mit Placemark-Namen basierend auf Foto- und Punkttiteln. Der Notizinhalt (wie “Note 1”, “Note 2” usw.) wird im Feld imageNotes als tabgetrennte Werte gespeichert. Dieses Skript ermöglicht es Ihnen, diese Notizinformationen automatisch zu extrahieren und bei Bedarf als Placemark-Namen zu verwenden.
Am besten ist es wahrscheinlich, Ihre Notizen direkt beim Fotografieren in das Titelfeld einzugeben. Dieses Skript dient für den Fall, dass Sie dies nicht getan haben, und auch als Beispiel für die KML-Nachbearbeitung.
Anwendungsfall
Vorher:
- Placemark-Namen zeigen Zeitstempel:
15Nov25 16:25,12Nov25 17:24 - Tatsächliche Notizen sind im Feld
imageNotesverborgen:Note 1,Note 2
Nachher:
- Placemark-Namen zeigen aussagekräftige Notizen:
Note 1,Note 2 - Einfache Identifizierung von Punkten auf einen Blick in Kartenanwendungen
KML-Dateistruktur
Die exportierte KML-Datei enthält Placemarks mit folgender Struktur:
<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>
Das Feld imageNotes enthält tabgetrennte Werte:
- Feld 0: Zeitstempel (
15Nov25 16:25) - Feld 1: Notiztext (
Note 1) ← Dies extrahieren wir - Feld 2: Leer
- Feld 3: Typ (
Ad-hoc) - Feld 4: Adresse
Lösung: Python-Skript
Wir haben ein Python-Skript erstellt, das KML-Dateien automatisch verarbeitet und Placemark-Namen basierend auf dem Inhalt von imageNotes aktualisiert.
Skript-Funktionen
- Automatische Extraktion: Analysiert tabgetrennte
imageNotes-Felder - Positionsbasiert: Extrahiert Notizen aus einer bestimmten Feldposition (Standard: Position 1)
- Generisch: Funktioniert mit jeder KML-Datei, die dieser Struktur folgt
- Sicher: Erstellt Backups vor dem Überschreiben von Dateien
- Flexibel: Kann in eine neue Datei ausgeben oder direkt aktualisieren
Funktionsweise
- KML-Datei parsen: Liest die XML-Struktur
- Placemarks finden: Lokalisiert alle
<Placemark>-Elemente - Notizen extrahieren: Teilt
imageNotesdurch Tabulatorzeichen und erhält die Notiz an Position 1 - Namen aktualisieren: Ersetzt das gesamte
<name>-Element durch die extrahierte Notiz - Ausgabe speichern: Schreibt aktualisierte KML in Datei
Installation & Verwendung
Voraussetzungen
- Python 3 (vorinstalliert auf macOS, Download von python.org für Windows)
- Keine zusätzlichen Bibliotheken erforderlich (verwendet nur Standardbibliothek)
Schritt-für-Schritt-Anleitung
1. Skript herunterladen
Laden Sie update_kml_names.py herunter und platzieren Sie es im selben Ordner wie Ihre KML-Datei.
2. Skript ausführen
macOS / Linux:
# Zum Ordner mit Ihrer KML-Datei navigieren
cd ~/Downloads/Points_20251115_163211
# Skript ausführen (erstellt Backup, aktualisiert Original)
python3 update_kml_names.py doc.kml
# Oder neue Ausgabedatei erstellen (behält Original)
python3 update_kml_names.py doc.kml updated_points.kml
Windows:
# Zum Ordner mit Ihrer KML-Datei navigieren
cd %USERPROFILE%\Downloads\Points_20251115_163211
# Skript ausführen (erstellt Backup, aktualisiert Original)
python update_kml_names.py doc.kml
# Oder neue Ausgabedatei erstellen (behält Original)
python update_kml_names.py doc.kml updated_points.kml
3. Ergebnisse anzeigen
Das Skript zeigt die Aktualisierungen an:
Updated: '15Nov25 16:25' -> 'Note 1'
Updated: '12Nov25 17:24' -> 'Note 2'
Completed! Updated 2 placemark(s).
Output saved to: doc.kml
Erweiterte Verwendung
Benutzerdefinierte Notizposition
Wenn Ihr imageNotes-Feld eine andere Struktur hat und die Notiz an einer anderen Position ist, können Sie diese angeben:
# Notiz aus Position 2 extrahieren (drittes Feld, 0-indiziert)
python3 update_kml_names.py doc.kml output.kml 2
Stapelverarbeitung
Sie können mehrere KML-Dateien mit einem einfachen Skript verarbeiten:
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
}
Beispiel: Vorher und Nachher
Vor der Verarbeitung
<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>
Nach der Verarbeitung
<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>
Technische Details
Skript-Implementierung
Das Skript verwendet Pythons integrierten XML-Parser (xml.etree.ElementTree) um:
- KML-Dateien mit korrekter Namespace-Behandlung zu parsen
- Die XML-Struktur zu navigieren und Placemark-Elemente zu finden
- Tabgetrennte Werte zu extrahieren und zu verarbeiten
- Elemente zu aktualisieren, während die Dateistruktur erhalten bleibt
Kompatibilität
- KML-Version: 2.2 (Standardformat)
- Python-Version: 3.6+
- Betriebssysteme: macOS, Windows, Linux
- Apps: Kompatibel mit Google Earth, QGIS, ArcGIS und anderen KML-unterstützenden Anwendungen
Fehlerbehebung
Problem: Skript nicht gefunden
Ursache: Python nicht installiert oder nicht im System-PATH
Lösung:
- macOS: Python 3 sollte vorinstalliert sein
- Windows: Download von python.org und sicherstellen, dass “Add to PATH” bei der Installation aktiviert ist
Problem: Leere Namen nach Aktualisierung
Ursache: Notizfeld ist leer oder an falscher Position
Lösung: Das Skript zeigt eine Warnung an. Überprüfen Sie Ihr imageNotes-Format und passen Sie den Positionsparameter an.
Integration in Ihren Workflow
Dieses Skript kann in automatisierte Workflows integriert werden:
- Export aus GPS Camera: Punkte als KMZ/KML exportieren
- KML extrahieren: KMZ bei Bedarf entpacken
- Skript ausführen: KML verarbeiten, um Namen zu aktualisieren
- In GIS importieren: In Google Earth, QGIS oder anderen Tools verwenden
Quellcode
#!/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
Für Fragen oder Probleme:
- Überprüfen Sie, ob Python 3 korrekt installiert ist
- Prüfen Sie, ob
imageNotestabgetrennte Werte enthält
Lizenz
Dieses Skript wird wie besehen für die Verwendung mit App-Exporten bereitgestellt. Fühlen Sie sich frei, es an Ihre spezifischen Bedürfnisse anzupassen und zu modifizieren.
Verwandte Dokumentation
Export & Import
- Foto-/Punkt-Freigabeoptionen - Erfahren Sie, wie Sie Punkte in den Formaten KMZ, KML, GPX und CSV exportieren
- Punkte in Sammlungen organisieren - Verstehen Sie die Datenstruktur vor dem Exportieren
Arbeiten mit Google Earth
- Google Earth-Anpassungen und Optimierungen - KMZ-Dateien in Google Earth anpassen, Balloon-Stile und Zugriff auf rohes KML
Verwandte Workflows
- Dateinamen für Batch-Exporte anpassen - Automatisierung der Dateibenennung in Batch-Verarbeitungsskripten
- Einstellungs-Backup für Workflow-Automatisierung - Workflow-Profile programmatisch verwalten
- Fotos mit Standortdaten importieren - Vervollständigen Sie den Export-/Verarbeitungs-/Import-Workflow
Zuletzt aktualisiert: November 2025