Создание файла KML из файла XML

Как я могу создавать файлы KML из файлов XML с помощью python. У меня много файлов XML. Я уже проанализировал данные из файлов XML с помощью синтаксического анализатора SAX.

Теперь я хочу создать файлы KML из данных, которые я проанализировал.

Есть ли другой способ, кроме xml.dom.minidom, записать файл KML. В настоящее время я думаю о создании файла шаблона KML. Затем скопируйте файл шаблона KML и заполните его «данными».

Может ли кто-нибудь предложить лучший способ?

Меня больше всего беспокоит ремонтопригодность (запись данных с помощью minidom довольно запутанна для чтения).


person Harman    schedule 03.11.2011    source источник


Ответы (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')
person Mark Tolonen    schedule 03.11.2011
comment
Я думаю, что я выберу минидом (если будет выбор между минидомом и ElementTree). Если есть что-то еще, дайте мне знать. Но ваш код дал мне представление о классе. Спасибо за это. Заставьте класс Kml справиться со всей сложностью KML и просто вызывать его чистые интерфейсы. - person Harman; 04.11.2011
comment
Я считаю, что long должен стоять перед лат в формате .format. Спасибо за код! - person cloudsurfin; 01.05.2014