在kml文件中查找地标

问题描述 投票:0回答:2

我想找到kml文件中的所有地标:

from lxml import etree
doc = etree.parse(filename)
for elem in doc.findall('<Placemark>'):
   print(elem.find("<Placemark>").text) 

这不起作用,即它找不到任何东西,我认为因为每个地标都是唯一的,因为每个地标都有自己的 id,例如:

<Placemark id="ID_09795">
<Placemark id="ID_15356">
<Placemark id="ID_64532">

我该怎么做?

编辑:根据@ScottHunter 评论更改代码:

placemark_list = doc.findall("Placemark")
print ("length:" + str(len(placemark_list)))
for placemark in placemark_list:
  print(placemark.text) 

长度为0

python xml-parsing
2个回答
1
投票

在没有看到完整文件的情况下很难判断,但尝试这样的事情

placemark_list = doc.xpath("//*[local-name()='Placemark']")
print(len(placemark_list))

看看它是否有效。


0
投票

您可以使用 fastkml 来做到这一点,详细信息请参见 answerfastkml 文档 长话短说:

from fastkml.utils import find_all
from fastkml import KML
from fastkml import Placemark
k = KML.parse("docs/Document-clean.kml")
placemarks = find_all(k, of_type=Placemark)
for p in placemarks:
    print(p.geometry)
    print(p.name)  
© www.soinside.com 2019 - 2024. All rights reserved.