在python中创建一个包含点和线的kml

问题描述 投票:0回答:1

我试图在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") 
python kml
1个回答
1
投票

该文件在第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")
© www.soinside.com 2019 - 2024. All rights reserved.