首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pykml中读取包含多个地标的kml文件

在pykml中读取包含多个地标的kml文件
EN

Stack Overflow用户
提问于 2015-10-25 01:34:25
回答 2查看 8.1K关注 0票数 3

pykml中,我可以使用以下代码读取文件中的第一个placemark:

代码语言:javascript
复制
 with open(filename) as f:
     pm = parser.parse(f).getroot().Document.Folder
     print "got :"
     print pm.Placemark.LineString.coordinates

如何将同一文件中的多个placemarks读入python?

EN

回答 2

Stack Overflow用户

发布于 2015-10-25 01:45:38

这是可行的:

代码语言:javascript
复制
with open(filename) as f:
    doc = parser.parse(f).getroot().Document.Folder
for pm in doc.iterchildren():
    if hasattr(pm, 'LineString'):
        print pm.LineString.coordinates
票数 8
EN

Stack Overflow用户

发布于 2016-02-04 15:47:07

编辑:一个更简单的解决方案,假设所有的placemarks都在一个文件夹中:

代码语言:javascript
复制
from pykml import parser

with open(filename) as f:
  folder = parser.parse(f).getroot().Document.Folder

for pm in folder.Placemark:
  print(pm.name)

您还可以使用底层xml库lxml的特性来搜索placemark元素。

代码语言:javascript
复制
from pykml import parser
from pykml.factory import nsmap

namespace = {"ns": nsmap[None]}

with open(filename) as f:
  root = parser.parse(f).getroot()
  pms = root.findall(".//ns:Placemark", namespaces=namespace)

  for pm in pms:
    print(pm.name)

如果您专门搜索具有Linestring子项的placemarks,则还可以使用xpath进行更复杂的搜索。

代码语言:javascript
复制
pms = root.xpath(".//ns:Placemark[.//ns:LineString]", namespaces=namespace)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33321223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档