2017-03-16 119 views
-2

我还是很新的python,我试图将列表(List2)上的位置导出到一个kml文件,然后将在谷歌地图上显示结果。我不知道真正的我在做什么和ATM所有我得到是一个语法错误周围的每一个,“符号。有人可以帮我这吧。试图在Python中创建一个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() 

回答

0

简单:

  • 你应该改变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()线,让蟒蛇管理文件关闭:

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])) 
+0

我是一个完整的derp omg,好吧,我已经改变了,但我仍然不断收到这部分代码的语法错误: f.write(“\ t \ t \ t “+ str(row [2])+ str(row [1])”“) 在最后,”,由于某种原因,符号 –

+0

我编辑了代码, +' – PurpleJo

1

在你的代码还没有定义。可变f应该引用您要写入文件的对象时,既可以做

f = open("KML.txt", "w") 
f.write("<KML_File>\n") 
... 
f.close() 

或更好:

with open("KML.txt", "w") as f: 
    f.write("<KML_File>\n") 
    ... 

这使得一定要始终关闭该文件,即使如此我在两者之间的代码失败。

要编写XML文件,您可能需要查看Python xml-package

+0

我是一个完整DERP OMG,确定我已经改变了,但我仍然在这部分代码中出现语法错误:f.write(“\ t \ t \ t ”+ str(row [2])+ str(row [1])“”)在最后,“,由于某种原因的标志 –

+0

你忘记了船尾的”+“号er'str(row [1])' –

0

而不是在print语句中对XML输出进行硬编码,您应该使用simplekml包。 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>