我有一个坐标列表,我想基于列表“ coord”创建一个包含所有这些线条的kml。我几乎可以正常工作,但是,它只会为列表中的最后一个坐标创建线串。我如何在simplekml中使用kml文件附加(或类似的东西),这样我就可以遍历列表并为“ coord”中的每个索引创建一个新的行字符串,并将它们全部放入一个kml中?
这就是“坐标”的样子
[[(-89.60233333333333, 29.178833333333333), (-88.91166666666666, 30.255)], [(-88.73, 30.283833333333334), (-87.82583333333334, 30.298333333333332)], [(-87.6, 30.13), (-87.6, 30.05)], [(-87.9, 30.05), (-87.9, 30.13)], [(-87.95733333333334, 30.254), (-87.9825, 30.655833333333334)], [(-87.82366666666667, 30.282333333333334), (-88.7285, 30.278166666666667)], [(-88.88983333333333, 30.229333333333333), (-89.58366666666667, 29.154166666666665)], [(-89.88433333333333, 29.19333333333333), (-90.2005, 30.415666666666667)], [(-91.00733333333334, 30.875333333333334), (-95.13933333333334, 29.981166666666667)], [(-95.46, 29.272333333333332), (-95.46183333333333, 28.965)], [(-95.607, 28.9765), (-95.30183333333333, 29.2585)]]
for idx, val in enumerate(coord):
kml = simplekml.Kml()
ls = kml.newlinestring(name='A LineString {0}'.format(idx))
ls.coords = coord[idx]
ls.extrude = 1
ls.altitudemode = simplekml.AltitudeMode.relativetoground
ls.style.linestyle.width = 5
ls.style.linestyle.color = simplekml.Color.red
kml.save('lines.kml')
我的kml文件如下所示,这就是我想要的,但我也希望所有其他索引都在其中,而不仅仅是最后一个
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document id="4347">
<Style id="4350">
<LineStyle id="4351">
<color>ff0000ff</color>
<colorMode>normal</colorMode>
<width>5</width>
</LineStyle>
</Style>
<Placemark id="4349">
<name>A LineString 10</name>
<styleUrl>#4350</styleUrl>
<LineString id="4348">
<coordinates>-95.607,28.9765,0.0 -95.30183333333333,29.2585,0.0</coordinates>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
</LineString>
</Placemark>
</Document>
</kml>
答案 0 :(得分:0)
我明白了
for idx, val in enumerate(coord):
kml = simplekml.Kml()
idx = 0
for x in coord:
try:
idx +=1
ls = kml.newlinestring(name='A LineString {0}'.format(idx))
ls.coords.addcoordinates(coord[idx])
ls.extrude = 1
ls.style.linestyle.width = 5
ls.style.linestyle.color = simplekml.Color.blue
except:
pass
kml.save('lines.kml')