我试图在python中创建一个kml文件(使用simplekml),它有连接这些点的点和线。我也想把点分成正方形而不是默认的黄色图钉。
现在我已经成功创建了具有点OR线的kml文件。但我想将两者合并为一个文件。我正在从csv文件中读取文件。所以我想把两个代码放在一起会给我一条线和一条点,但事实并非如此。我只是看点。我在这里失踪了什么?
inputfile = csv.reader(open(file, 'r'))
kml = simplekml.Kml()
ls = kml.newlinestring(name='A LineString')
ls.coords = np.array([[float(row[2]),float(row[1])] for row in inputfile ])
ls.extrude = 1
ls.altitudemode = simplekml.AltitudeMode.relativetoground
for row in inputfile:
kml.newpoint(name=row[0], coords=[(row[2], row[1])])
pnt.style.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/placemark_square.png'
kml.save("Points_and_Line.kml")
该文件在第4行执行后结束,因此第二个for循环在尝试创建点时迭代空列表。
在创建点时读入文件中每行的坐标,并将坐标添加到可用于创建线的列表中。
inputfile = csv.reader(open("points.dat", 'r'))
points = []
for row in inputfile:
coord = (row[2], row[1]) # lon, lat order
pnt = kml.newpoint(name=row[0], coords=[coord])
points.append(coord)
pnt.style.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/placemark_square.png'
ls = kml.newlinestring(name='A LineString')
ls.coords = np.array(points)
ls.altitudemode = simplekml.AltitudeMode.relativetoground
ls.extrude = 1
kml.save("Points_and_Line.kml")