Как я могу просмотреть список и создать / добавить в kml с помощью simplekml? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть список координат, и я хочу создать kml, который имеет все эти строки, основываясь на списке 'координаты'.У меня это почти работает, однако, он будет создавать только линейную строку для последней координаты в списке.Как я могу добавить (или что-то в этом роде) файл kml в simplekml, чтобы я мог перебрать свой список и создать новую строку строки для каждого индекса в 'координате' и поместить их все в один кмль?

Это то, как выглядит 'координата'

[[(-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>

1 Ответ

0 голосов
/ 16 мая 2019

Я понял это

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