如何循环浏览列表并使用SimpleKML创建/添加到KML



我有一个坐标列表,我想创建一个基于列表'coord'的所有这些细胞的kml。我几乎可以使用它,但是,它只会为列表中的最后一个坐标创建linestring。如何在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>

我弄清楚了

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')

最新更新