首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用simplekml遍历列表并创建/添加到kml?

如何使用simplekml遍历列表并创建/添加到kml?
EN

Stack Overflow用户
提问于 2019-05-17 01:56:23
回答 1查看 675关注 0票数 0

我有一个坐标列表,我想创建一个kml,它包含基于列表'coord‘的所有这些线条。我让它几乎正常工作,但是,它只会为列表中的最后一个坐标创建线串。如何在simplekml中附加(或类似的) kml文件,这样我就可以遍历我的列表,为'coord‘中的每个索引创建一个新的行字符串,并将它们全部放入一个kml中?

这就是'coord‘的样子

代码语言:javascript
复制
[[(-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文件看起来像这样,这是我想要的,但我也希望所有其他索引也在那里,而不仅仅是最后一个索引

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

发布于 2019-05-17 02:35:21

我想通了

代码语言:javascript
复制
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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56174153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档