使用Python从KML BatchGeo文件中提取坐标

时间:2012-12-04 21:19:10

标签: python geocoding kml lxml

我已经将一些地址上传到BatchGeo并下载了生成的KML文件,我想从中提取坐标。我设法在网上here美化了混乱的文本文件,但我不知道如何解析它来提取坐标。

<?xml version="1.0" ?>
<kml xmlns="http://earth.google.com/kml/2.0">
    <Document>
        <Placemark>
            <name>...</name>
            <description>....</description>
            <Point>
                <coordinates>-3.1034345755337,57.144817425039,0</coordinates>
            </Point><address>...</address>
            <styleUrl>#0</styleUrl>
        </Placemark>
    </Document>
</kml>

似乎有几个用于python的kml库,但对文档的方式不多(例如pyKML)。使用本教程,我已经做到了这一点并创建了一个'lxml.etree._ElementTree'对象,但我不确定它的属性:

from pykml import parser

kml_file = "BatchGeo.kml"

with open(kml_file) as f:

    doc = parser.parse(f)

coordinate = doc.Element("coordinates")
print coordinate

这给出了错误:

AttributeError: 'lxml.etree._ElementTree' object has no attribute 'Element'

那么如何获得坐标列表?感谢。

1 个答案:

答案 0 :(得分:10)

from pykml import parser

root = parser.fromstring(open('BatchGeo.kml', 'r').read())
print root.Document.Placemark.Point.coordinates

请参阅the pykml docs

希望有所帮助!