我正在编写一个脚本来获取csv文件并将csv的每一行写入kml中的地标。该脚本一直工作到第二个for循环,并且无法在kml文件中写入地标。我知道该脚本在编写LookAt时工作正常,然后似乎跳过for循环。
一点背景...... csv包含7列,最后一列看起来像这样&#34 ;;纬度;经度;半径"。这就是为什么我有第一个for循环来分割这三位信息。
这是我到目前为止所拥有的。
import csv
from Tkinter import *
from tkFileDialog import *
root = Tk()
root.fileName = askopenfilename( filetypes = ( ("Comma Separated Values", "*.csv"), ("All files", "*.*") ) )
print (root.fileName)
#close tkinter gui window
root.destroy()
#open the csv file
data = csv.reader(open (root.fileName), delimiter = ',')
#skip header row
next(data)
for line in data:
raw_coordinates = line[6]
#print raw_coordinates
lat_long_radius = raw_coordinates.split(';')
#Open the file to be written.
f = open('TPS_Report.kml', 'w')
#Writing the kml file.
f.write("<?xml version='1.0' encoding='UTF-8'?>\n")
f.write("<kml xmlns='http://earth.google.com/kml/2.1'>\n")
f.write("<Document>\n")
f.write(" <name>" + str("TPS_Report") + '.kml' +"</name>\n") # display name of kml file in Google Earth
#Create LookAt for start location at 39,-98 4200km eye alt, 0 tilt
print ("Creating LookAt")
f.write(" <LookAt>\n")
f.write(" <longitude>" + str("-98") + "</longitude>\n")
f.write(" <latitude>" + str("39") + "</latitude>\n")
f.write(" <range>" + str("4200000") + "</range>\n")
f.write(" <tilt>" + str("0") + "</tilt>\n")
f.write(" </LookAt>\n")
for row in data:
f.write(" <Placemark>\n")
f.write(" <name>" + lat_long_radius[3] + " meters" + "</name>\n")
f.write(" <description>" + str(row[0]) + "\n")
f.write(" " + str(row[1]) + "\n")
f.write(" " + str(row[2]) + "\n")
f.write(" " + str(row[3]) + "\n")
f.write(" " + str(row[4]) + "\n")
f.write(" " + str(row[5]) + "\n")
f.write(" " + str(row[6]) + "</description>\n")
f.write(" <gx:balloonVisibility>" + str("1") + "</gx:balloonVisibility>\n")
f.write(" <Point>\n")
f.write(" <coordinates>" + lat_long_radius[2] + "," + lat_long_radius[1] + "," + str(0) + "</coordinates>\n")
f.write(" </Point>\n")
f.write(" </Placemark>\n")
f.write("</Document>\n")
f.write("</kml>\n")
f.close()
print ("File Created. ")
print ("Press ENTER to exit. ")
raw_input()
任何帮助将不胜感激
答案 0 :(得分:0)
您的data
变量不是列表,它是使用您的文件的迭代器。一旦你迭代它,你已经到达文件的末尾,任何再次迭代它的尝试都将失败(因为没有什么可读的)。
如果您确实需要迭代文件两次,请将内容保存在某处(例如,在列表中)。或重组您的计划,以便您只需一次通过就能完成所需的一切。
您的代码还有其他问题,例如lat_long_radius
,这是所有点的相同值。