Uygulamadan dışa aktarılan ham kml/kmz dosyalarıyla çalışma örnekleri.
Bu sayfa, faydalı bulabileceğiniz kmz/kml dosya işleme örnekleri sağlar.
Hazırlık:
- GPS Camera’dan Dışa Aktar: Noktaları KMZ/KML olarak dışa aktarın
- KML’yi Çıkart: Gerekirse KMZ’yi açın
imageNotes’tan KML Yer İşareti Adlarını Güncelleme
Bu kılavuz, imageNotes alanından bilgi çıkararak KML dosyalarınızdaki yer işareti adlarını otomatik olarak nasıl güncelleyeceğinizi gösterir.
Genel Bakış
GPS Camera’dan noktaları dışa aktarırken, uygulama fotoğraf ve nokta başlıklarına dayalı yer işareti adlarıyla KML dosyaları oluşturur. Not içeriği (“Note 1”, “Note 2” vb. gibi) imageNotes alanında sekmeyle ayrılmış değerler olarak saklanır. Bu betik, o not bilgisini otomatik olarak çıkarmanıza ve gerekirse yer işareti adı olarak kullanmanıza olanak tanır.
Muhtemelen en iyisi, fotoğraf çekerken notlarınızı Başlık alanına koymaktır. Bu betik, bunu yapmadığınız durumlar için ve kml işleme örneği olarak da hizmet eder.
Kullanım Örneği
Önce:
- Yer işareti adları zaman damgalarını gösterir:
15Nov25 16:25,12Nov25 17:24 - Gerçek notlar
imageNotesalanında gizlidir:Note 1,Note 2
Sonra:
- Yer işareti adları anlamlı notları gösterir:
Note 1,Note 2 - Harita uygulamalarında noktaları bir bakışta kolayca tanımlama
KML Dosya Yapısı
Dışa aktarılan KML dosyası aşağıdaki yapıya sahip yer işaretleri içerir:
<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>
imageNotes alanı sekmeyle ayrılmış değerler içerir:
- Alan 0: Zaman damgası (
15Nov25 16:25) - Alan 1: Not metni (
Note 1) ← Çıkardığımız şey bu - Alan 2: Boş
- Alan 3: Tür (
Ad-hoc) - Alan 4: Adres
Çözüm: Python Betiği
KML dosyalarını otomatik olarak işleyen ve imageNotes içeriğine göre yer işareti adlarını güncelleyen bir Python betiği oluşturduk.
Betik Özellikleri
- Otomatik çıkarma: Sekmeyle ayrılmış
imageNotesalanını ayrıştırır - Konum tabanlı: Belirli bir alan konumundan not çıkarır (varsayılan: konum 1)
- Genel: Bu yapıyı izleyen herhangi bir KML dosyasıyla çalışır
- Güvenli: Dosyaların üzerine yazmadan önce yedek oluşturur
- Esnek: Yeni bir dosyaya çıktı verebilir veya yerinde güncelleyebilir
Nasıl Çalışır
- KML dosyasını ayrıştır: XML yapısını okur
- Yer işaretlerini bul: Tüm
<Placemark>öğelerini bulur - Notları çıkar:
imageNotes‘u sekme karakteriyle böler ve konum 1’deki notu alır - Adları güncelle: Tüm
<name>öğesini çıkarılan notla değiştirir - Çıktıyı kaydet: Güncellenmiş KML’yi dosyaya yazar
Kurulum ve Kullanım
Ön Koşullar
- Python 3 (macOS’ta önceden yüklenmiş, Windows için python.org ‘dan indirin)
- Ek kütüphane gerekmez (yalnızca standart kütüphane kullanır)
Adım Adım Kılavuz
1. Betiği İndirin
update_kml_names.py dosyasını indirin ve KML dosyanızla aynı klasöre yerleştirin.
2. Betiği Çalıştırın
macOS / Linux:
# KML dosyanızı içeren klasöre gidin
cd ~/Downloads/Points_20251115_163211
# Betiği çalıştırın (yedek oluşturur, orijinali günceller)
python3 update_kml_names.py doc.kml
# Veya yeni bir çıktı dosyası oluşturun (orijinali korur)
python3 update_kml_names.py doc.kml updated_points.kml
Windows:
# KML dosyanızı içeren klasöre gidin
cd %USERPROFILE%\Downloads\Points_20251115_163211
# Betiği çalıştırın (yedek oluşturur, orijinali günceller)
python update_kml_names.py doc.kml
# Veya yeni bir çıktı dosyası oluşturun (orijinali korur)
python update_kml_names.py doc.kml updated_points.kml
3. Sonuçları Görüntüleyin
Betik güncellemeleri gösterecektir:
Updated: '15Nov25 16:25' -> 'Note 1'
Updated: '12Nov25 17:24' -> 'Note 2'
Completed! Updated 2 placemark(s).
Output saved to: doc.kml
Gelişmiş Kullanım
Özel Not Konumu
imageNotes alanınız farklı bir yapıya sahipse ve not farklı bir konumdaysa, bunu belirtebilirsiniz:
# Konum 2'den notu çıkar (üçüncü alan, 0-indeksli)
python3 update_kml_names.py doc.kml output.kml 2
Toplu İşleme
Basit bir betik kullanarak birden fazla KML dosyasını işleyebilirsiniz:
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
}
Örnek: Önce ve Sonra
İşlemeden Önce
<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>
İşlemeden Sonra
<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>
Teknik Detaylar
Betik Uygulaması
Betik, Python’un yerleşik XML ayrıştırıcısını (xml.etree.ElementTree) kullanır:
- Uygun ad alanı işlemeyle KML dosyalarını ayrıştırmak için
- Yer işareti öğelerini bulmak için XML yapısında gezinmek için
- Sekmeyle ayrılmış değerleri çıkarmak ve işlemek için
- Dosya yapısını koruyarak öğeleri güncellemek için
Uyumluluk
- KML sürümü: 2.2 (standart format)
- Python sürümü: 3.6+
- İşletim Sistemleri: macOS, Windows, Linux
- Uygulamalar: Google Earth, QGIS, ArcGIS ve diğer KML destekleyen uygulamalarla uyumludur
Sorun Giderme
Sorun: Betik bulunamadı
Neden: Python yüklü değil veya sistem PATH’inde değil
Çözüm:
- macOS: Python 3 önceden yüklenmiş olmalıdır
- Windows: python.org ‘dan indirin ve kurulum sırasında “Add to PATH"in işaretli olduğundan emin olun
Sorun: Güncellemeden sonra boş adlar
Neden: Not alanı boş veya yanlış konumda
Çözüm: Betik bir uyarı gösterecektir. imageNotes formatınızı kontrol edin ve konum parametresini ayarlayın.
İş Akışınızla Entegrasyon
Bu betik otomatik iş akışlarına entegre edilebilir:
- GPS Camera’dan Dışa Aktar: Noktaları KMZ/KML olarak dışa aktarın
- KML’yi Çıkart: Gerekirse KMZ’yi açın
- Betiği Çalıştır: Adları güncellemek için KML’yi işleyin
- GIS’e Aktar: Google Earth, QGIS veya diğer araçlarda kullanın
Kaynak Kodu
#!/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)
Destek
Sorular veya sorunlar için:
- Python 3’ün doğru şekilde yüklendiğini doğrulayın
imageNotes‘un sekmeyle ayrılmış değerler içerdiğini kontrol edin
Lisans
Bu betik, uygulama dışa aktarımlarıyla kullanım için olduğu gibi sağlanmaktadır. Özel ihtiyaçlarınıza göre değiştirmekten ve uyarlamaktan çekinmeyin.
İlgili Dokümantasyon
Dışa ve İçe Aktarma
- Fotoğraf/Nokta paylaşım seçenekleri - KMZ, KML, GPX ve CSV formatlarında noktaları nasıl dışa aktaracağınızı öğrenin
- Noktaları koleksiyonlarda düzenleme - Dışa aktarmadan önce veri yapısını anlayın
Google Earth ile Çalışma
- Google Earth ayarları ve özelleştirmeler - Google Earth’te KMZ dosyalarını özelleştirin, balon stilleri ve ham KML’ye erişim
İlgili İş Akışları
- Toplu dışa aktarma için dosya adlarını özelleştirme - Toplu işleme betiklerinde dosya adlandırmayı otomatikleştirin
- İş akışı otomasyonu için ayar yedeği - İş akışı profillerini programlı olarak yönetin
- Konum verileriyle fotoğrafları içe aktarma - Dışa aktarma/işleme/içe aktarma iş akışını tamamlayın
Son güncelleme: Kasım 2025