我正在使用simplekml库创建kml。当创建一个单独的条目时,它就像一个咒语,但是当尝试为每个dict条目创建一个kml时,返回一个我找不到的错误。数据的格式如下:
{12: {900: [(-5.4529673, 4.46),
(-3.4529799, 40.454),
(-3.495, 33),
(-3.45471, 40.437)]},
29: {900: [(-3.452....}脚本如下所示:
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")返回此错误:
AttributeError: 'int' object has no attribute 'count'我一直在使用kml.save('key‘+".kml")...always将边界转换为字符串,解决了同样的问题。我不知道这一切中的Int是什么,我开始认为这是库本身的问题?请并谢谢你
P.E:也尝试迭代enst字典,产生相同的错误:
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")发布于 2020-03-22 08:14:54
因此,正如您所说的,它将在循环之外工作,因为您不是在迭代data字典的整个元素。
问题出在这里保存的数据。
{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并将该想法合并到代码中。
发布于 2020-03-22 16:37:38
创建函数结束,更容易使用
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") 发布于 2021-05-06 02:23:41
问题是命名多边形,即pol =kml.newpolygon(名称=键)。由于键的类型为int,因此需要将其转换为string。
pol =kml.newpolygon(名称=字符串(密钥))
https://stackoverflow.com/questions/60793163
复制相似问题