#python #xml #kml #google-earth
#python #xml #kml #google-планета Земля
Вопрос:
Как я могу создавать файлы KML из файлов XML с помощью python. У меня много файлов XML. Я уже проанализировал данные из файлов XML с помощью синтаксического анализатора SAX.
Теперь я хочу создать файлы KML из данных, которые я проанализировал.
Есть ли какой-либо другой способ, кроме xml.dom.minidom
записи файла KML. В настоящее время я подумываю о создании файла шаблона KML. Затем скопируйте файл шаблона KML и заполните в нем «данные».
Кто-нибудь может предложить лучший способ?
Моя главная проблема — удобство обслуживания (запись данных с использованием minidom довольно запутана для чтения кем-либо).
Ответ №1:
Попробуйте xml.etree.ElementTree. Вот краткий пример создания пары точек в файле KML:
from xml.etree import ElementTree as et
class Kml(object):
def __init__(self):
self.root = et.Element('kml')
self.doc = et.SubElement(self.root,'Document')
def add_placemark(self,name,desc,lat,long,alt):
pm = et.SubElement(self.doc,'Placemark')
et.SubElement(pm,'name').text = name
et.SubElement(pm,'description').text = desc
pt = et.SubElement(pm,'Point')
et.SubElement(pt,'coordinates').text = '{},{},{}'.format(lat,long,alt)
def write(self,filename):
tree = et.ElementTree(self.root)
tree.write(filename)
kml = Kml()
kml.add_placemark('Location1','Description1',-120,45,0)
kml.add_placemark('Location2','Description2',60,-45,0)
kml.write('out.kml')
Комментарии:
1. Я думаю, что я пойду с minidom (если будет предоставлен выбор между minidom и ElementTree). Если есть что-то еще, дайте мне знать. Но ваш код дал мне идею класса. Спасибо за это. Сделайте так, чтобы класс Kml справлялся со всей сложностью KML и просто вызывал его чистые интерфейсы.
2. я полагаю, что «long» должно предшествовать «lat» в формате .format . Спасибо за код!