在python中创建同时包含点和线的kml

时间:2019-02-19 15:34:39

标签: python kml

我正在尝试在python中创建一个kml文件(使用simplekml),该文件同时具有点和连接这些点的线。我还想将这些点变成正方形,而不是默认的黄色图钉。

现在,我已经成功创建了具有点或线的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") 

1 个答案:

答案 0 :(得分: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")