Q-Logo 我的学习笔记分享

Entries for tag "yan-se"

用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 还提供了其他的转换函数,可以自行查阅使用