0

我正在尝试在 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") 
4

1 回答 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")
于 2019-02-19T20:04:54.650 回答