试图用Python制作一个KML文件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (461)

我仍然是python的新手,我试图将列表(List2)上的位置导出到kml文件中,然后在谷歌地图上显示结果。我真的不知道我在做什么,所有我得到的是每个人的语法错误,“,符号。有人可以帮助我。

KMLFile = open("KML.txt", "w")
f.write("<KML_File>\n")
f.write("<Document>\n")
for line in List2:
    f.write("   <Placemark>")
    f.write("       <decription>" + str(row[0]) + "</description>")
    f.write("       <Point>")
    f.write("          <coordinates>" + str(row[2]) + str(row[1])"</coordinates>")
    f.write("       </Point>")
    f.write("   </Placemark>")
f.write("</Document>\n")
f.write("</kml>\n")
KMLFile = close()
提问于
用户回答回答于

简单来说:

  • 你应该改变KMLFilef反之亦然。
  • 你应该这样调用这个close()方法:f.close()

您更正后的代码:

f = open("KML.txt", "w")
f.write("<KML_File>\n")
f.write("<Document>\n")
for line in List2:
    f.write("\t<Placemark>")
    f.write("\t\t<decription>" + str(row[0]) + "</description>")
    f.write("\t\t<Point>")
    f.write("\t\t\t<coordinates>" + str(row[2]) + str(row[1]) + "</coordinates>")
    f.write("\t\t</Point>")
    f.write("\t</Placemark>")
f.write("</Document>\n")
f.write("</kml>\n")
f.close()

另外,如果你不想写f.close()行,让python管理文件的闭包:

with open("KML.txt", "w") as f:
    f.write("<KML_File>\n")
    f.write("<Document>\n")
    for line in List2:
        f.write("\t<Placemark>")
        f.write("\t\t<decription>" + str(row[0]) + "</description>")
        f.write("\t\t<Point>")
        f.write("\t\t\t<coordinates>" + str(row[2]) + str(row[1]) + "</coordinates>")
        f.write("\t\t</Point>")
        f.write("\t</Placemark>")
    f.write("</Document>\n")
    f.write("</kml>\n")

最后,如果您不想在+您的f.write()行中添加许多内容,您还可以选择以下format()方法:

f.write("\t\t\t<coordinates>{}{}/coordinates>".format(row[2], row[1]))
用户回答回答于

您应该使用python KML包,例如simplekml,而不是在print语句中对XML输出进行硬编码。simplekml API不仅简化了编写KML,还生成了有效的KML,代码更清晰,更易于理解。

import simplekml

kml = simplekml.Kml()
for row in List2:
  kml.newpoint(description=row[0],
      coords=[(row[2], row[1])])  # lon, lat, optional height
kml.save("test.kml")

将此测试输入用于单个点:

List2 = [ [ 'description', 51.500152, -0.126236 ] ] # description, lat, lon

KML输出将是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
    <Document id="feat_1">
        <Placemark id="feat_2">
            <description>description</description>
            <Point id="geom_0">
                <coordinates>-0.126236,51.500152,0.0</coordinates>
            </Point>
        </Placemark>
    </Document>
</kml>

扫码关注云+社区

领取腾讯云代金券