首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用simplekml从字典创建KML时出错

使用simplekml从字典创建KML时出错
EN

Stack Overflow用户
提问于 2020-03-22 04:54:23
回答 3查看 275关注 0票数 0

我正在使用simplekml库创建kml。当创建一个单独的条目时,它就像一个咒语,但是当尝试为每个dict条目创建一个kml时,返回一个我找不到的错误。数据的格式如下:

代码语言:javascript
复制
{12: {900: [(-5.4529673, 4.46),
   (-3.4529799, 40.454),
   (-3.495, 33),
   (-3.45471, 40.437)]},
29: {900: [(-3.452....}

脚本如下所示:

代码语言:javascript
复制
import simplekml
kml = simplekml.Kml()

for key, value in data.items():
    pol = kml.newpolygon(name = key)
    pol.outerboundaryis = data[key][900]
    pol.innerboundaryis = []
    print(pol.outerboundaryis)
    pol.style.linestyle.color = simplekml.Color.green
    pol.style.linestyle.width = 5
    pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)
    print(pol.name)
    kml.save(str(pol.name) +".kml")

返回此错误:

代码语言:javascript
复制
AttributeError: 'int' object has no attribute 'count'

我一直在使用kml.save('key‘+".kml")...always将边界转换为字符串,解决了同样的问题。我不知道这一切中的Int是什么,我开始认为这是库本身的问题?请并谢谢你

P.E:也尝试迭代enst字典,产生相同的错误:

代码语言:javascript
复制
import simplekml
kml = simplekml.Kml()

for key, value in data.items():
    for key2, value2 in value.items():
        pol = kml.newpolygon(name = key)
        pol.outerboundaryis = value2
        pol.innerboundaryis = []
        print(pol.outerboundaryis)
        pol.style.linestyle.color = simplekml.Color.green
        pol.style.linestyle.width = 5
        pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)
        kml.save(str(pol.name) +".kml")
EN

回答 3

Stack Overflow用户

发布于 2020-03-22 08:14:54

因此,正如您所说的,它将在循环之外工作,因为您不是在迭代data字典的整个元素。

问题出在这里保存的数据。

代码语言:javascript
复制
{12: {900: [(-5.4529673, 4.46),
   (-3.4529799, 40.454),
   (-3.495, 33),
   (-3.45471, 40.437)]},
29: {900: [(-3.452....}

这不能与这个语法for key, value in data.items():一起使用,因为它只接受key -> value对,并且您的数据由字典列表组成。

阅读有关正确使用for key, value in data.items():的更多here

要遍历字典列表,请参阅here并将该想法合并到代码中。

票数 0
EN

Stack Overflow用户

发布于 2020-03-22 16:37:38

创建函数结束,更容易使用

代码语言:javascript
复制
def kmlprinter(coordenadas):

kml = simplekml.Kml()
pol = kml.newpolygon(name="laputetxemadrequeparioaloscuñadosdeSO")
pol.outerboundaryis = coordenadas.values()
pol.innerboundaryis = []
pol.style.linestyle.color = simplekml.Color.green
pol.style.linestyle.width = 5
pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)
kml.save("1.kml")  
票数 0
EN

Stack Overflow用户

发布于 2021-05-06 02:23:41

问题是命名多边形,即pol =kml.newpolygon(名称=键)。由于键的类型为int,因此需要将其转换为string。

pol =kml.newpolygon(名称=字符串(密钥))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60793163

复制
相关文章

相似问题

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