如何使用Python的simple_kml库正确设置KML形状颜色?
问题解决方法
核心问题两个:
- 颜色格式不匹配:KML与HTML的颜色编码顺序完全相反
- 样式类型错误:折线应该用线样式而非多边形填充样式
1. 颜色格式差异说明
HTML颜色是#RRGGBB(红-绿-蓝),但KML的颜色规则是AABBGGRR(透明度-蓝-绿-红),其中透明度可选(默认FF表示完全不透明)。你传入的#ec0909是HTML红色(红=ec,绿=09,蓝=09),直接赋值会被KML解析为蓝=ec,绿=09,红=09,导致颜色错乱。
2. 样式类型错误说明
你创建的是linestring(折线),但设置了polystyle.color——这是多边形的填充样式,对折线无效,应该改用linestyle.color来控制折线颜色。
修正后的代码
ls = kml.newlinestring(name="Polyline") ls.coords = [(latlng['lng'], latlng['lat']) for latlng in shape['coordinates']] ls.description = shape['info_box'] color_code = "#ec0909" print(f"THE COLOR IS {color_code}") #returns #ec0909 # 把HTML颜色转换成KML格式 hex_color = color_code.lstrip('#') rr, gg, bb = hex_color[:2], hex_color[2:4], hex_color[4:] # 拼接成KML要求的FFBBGGRR(FF=完全不透明) kml_color = f"FF{bb}{gg}{rr}" # 折线用linestyle设置颜色,同时可调整线宽 ls.style.linestyle.color = kml_color ls.style.linestyle.width = 3 # 可选,设置折线粗细
内容的提问来源于stack exchange,提问作者Ahmed Wagdi
相关产品推荐
相关产品推荐

