用simplekml设置和转换KML 文件中的颜色
KML 文件中,要为点、线等设置颜色时,一般用<color>标签,例如
<color>FF0000FF</color>
<color>标签的文本内容,是为以BGR(AABBGGRR,其中AA是alpha,表示不透明度;B、G、R分别表示Blue、Green、Red即蓝、绿、红三种颜色,任何一种颜色的取值范围都是 0 到 255,一般用两位十六进制表示(00 到 FF))。上例中的FF0000FF
,表示红色,具体来看:前两位FF表示完全不透明,第三、四位00表示蓝色分量为0,第五、六位00表示绿色分量为0,第七、八位FF表示红色分量为FF。
这种表示方式与平时常用的RGB方式略有不同。当我们自己写KML文件时,需要注意这里的区别,如果需要的话,要将RGB方式表示的颜色表示为KML要求的BGR格式。
SimpleKML简介
SimpleKML 是一个Python 包,能帮助我们方便地生成kml或kmz文件。
例如下面的代码就可以创建一个位于指定经纬度的点,以及一条宽度为10颜色为红色的线:
import simplekml
kml = simplekml.Kml()
kml.newpoint(name="示例点", coords=[(18.432314,-33.988862)])# lon, lat, optional height
lin = kml.newlinestring(name="Pathway", description="A pathway in Kirstenbosch",
coords=[(18.43312,-33.98924), (18.43224,-33.98914),
(18.43144,-33.98911), (18.43095,-33.98904)])
lin.style.linestyle.color = 'FF0000FF'# Red
lin.style.linestyle.width= 10# 10 pixels
kml.save("pointexample.kml")
用SimpleKML转换颜色格式
如果我们已经有了RGB格式表示的颜色,需要转换为SimpleKML要求的BGR颜色,也很简单,直接使用simplekml.Color.hex()
即可,例如要将RGB格式的红色'FF0000'转换为SimpleKML要求的'FF0000FF',可以这样转换
simplekml.Color.hex('FF0000')
除此之外,SimpleKML 还提供了其他的转换函数,可以自行查阅使用
simplekml.Color.rgb()
- convert RGB to KML HEXsimplekml.Color.hex()
- convert HEX to KML HEXsimplekml.Color.hexa()
- convert HEX (with alpha) to KML HEX