首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyKML :将Placemark附加到多个KML文档

PyKML :将Placemark附加到多个KML文档
EN

Stack Overflow用户
提问于 2015-04-21 14:57:22
回答 1查看 789关注 0票数 1

我正在使用PyKML创建几个KML文件,并遇到了一些奇怪的行为,我希望有人能解释。以下是问题的再现:

代码语言:javascript
复制
from lxml import etree
from pykml.factory import KML_ElementMaker as KML

doc1 = KML.kml(KML.Document())
doc2 = KML.kml(KML.Document())

p = KML.Placemark()

doc1.Document.append(p)
doc2.Document.append(p)

print etree.tostring(etree.ElementTree(doc1),pretty_print=True)
print etree.tostring(etree.ElementTree(doc2),pretty_print=True)

这是输出:

代码语言:javascript
复制
<kml xmlns:gx="http://www.google.com/kml/ext/2.2"    xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.opengis.net/kml/2.2">
  <Document/>
</kml>

<kml xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Placemark/>
  </Document>
</kml>

地标出现在第二个文档中,而不是出现在第一个文档中。就好像Placemark一次只能附加到一个文件中一样。

如果我按下面的方式重新排列最后几行,事情就会成功。

代码语言:javascript
复制
doc1.Document.append(p)
print etree.tostring(etree.ElementTree(doc1),pretty_print=True)

doc2.Document.append(p)
print etree.tostring(etree.ElementTree(doc2),pretty_print=True)

以及产出:

代码语言:javascript
复制
<kml xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Placemark/>
  </Document>
</kml>

<kml xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Placemark/>
  </Document>
</kml>

但这将需要对我的代码进行重大重组,我希望避免这种情况。

我怀疑我遗漏了一些关于PyKML、lxmlelementtree甚至Python工作方式的基本内容。有人能解释一下这里可能发生什么事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 18:36:19

(部分回答--仍希望得到解释!)

如果我这样做了:

代码语言:javascript
复制
from copy import deepcopy
doc1.Document.append(deepcopy(p))
doc2.Document.append(deepcopy(p))

一切正常。但是,etree.tostring对输入对象doc1doc2做了什么?就好像他们被改变了一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29775864

复制
相关文章

相似问题

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