我用 python 编写了一个脚本,它将使用 simplekml python 包将 CSV 文件转换为 KML 文件。它尚未完成,因为它还需要根据我的数据值之一对我的点进行缩放和着色。现在我正在尝试这个 if/else 只是为了看看我是否可以使用共享样式,然后编辑每个点的颜色和比例(我计划更改它以使用一系列颜色,但现在我'我只是想弄清楚什么有效,什么无效)。我的数据有 5000 行,因此我想使用共享样式来使生成的 KML 尽可能短,然后使用 for 循环分配颜色和比例以及架构数据。
我的问题是这样的: if/else 执行,但它将共享样式图标颜色更改为柠檬绿。结果是每个点都是石灰绿色的。有没有办法使用共享样式并仅编辑颜色和比例而不覆盖共享样式?如果我删除共享样式,颜色会按预期工作,但我的 KML 文件很大。我对 python 很陌生,我上周才学的。因此,我们非常感谢任何帮助或提示。
编辑:似乎我无法完成我打算对那里的共享样式所做的事情。我可以使用 if/else 来比较和分配颜色,但只有当我摆脱共享样式时它才有效。我认为这会覆盖一切。然而,如果有办法做到这一点,这将使我的输出文件变得更小(使用共享样式时,它们约为 4mb,不使用共享样式时,它们约为 7mb,我知道这将在将来用于更大的数据集)。
这是我的代码供参考:
import simplekml
import csv
import math
kml = simplekml.Kml()
style = simplekml.Style() #creates shared style for all points
style.iconstyle.icon.href ='http://maps.google.com/mapfiles/kml/shapes/target.png' #can change to any desired icon URL
style.iconstyle.scale = 1
schema = kml.newschema(name= '') #creates schema
schema.newsimplefield(name= 'realization', type = 'string', display name = 'Realization')
schema.newsimplefield(name= 'diameter', type = …
Run Code Online (Sandbox Code Playgroud)