如何解决使用folium可视化时丢失geojson的特征属性信息
目前我已经制作了一个 geojson 文件(称为输出):
{"type": "FeatureCollection","features": [ {"type": "Feature","geometry": {"type": "Point","coordinates": [103.815381,1.279109]},"properties": {"temperature": 24,"marker-symbol": "park","marker-color": "#AF4646"}},{"type": "Feature","geometry": {"type": "MultiLinestring","coordinates": [[[103.809297,1.294906],[103.799445,1.283906],[103.815381,1.294906]]]},"stroke": "#AF4646"}}]}
它包含一个多行字符串类型和一个点类型。预期的输出应该是这样的(使用 geojson.io 可视化),所有属性(例如字符串和标记的颜色,标记的森林图标)都保留:
我的目标是生成此地图的 html 或图像文件(最佳选择)。所以我转向大叶。但是,当我使用命令时:
m = folium.Map(location=[1.2791,103.8154],zoom_start=12)
folium.GeoJson(output,name='test').add_to(m)
m.save('map.html')
可视化是这样的:
所有财产信息都被抹去的地方。有没有办法保留这些财产信息?谢谢。
解决方法
提供的 GeoJSON (output
) 包含 simplestyle
spec 中定义的样式属性,传单 L.geoJSON
不支持这些属性
leaflet-simplestyle
plugin 可以用来扩展 L.geoJSON
来支持 simplestyle 规范,这里有一个关于如何在 folium 中使用它的例子
import folium
from folium.elements import JSCSSMixin
from folium.map import Layer
from jinja2 import Template
class StyledGeoJson(JSCSSMixin,Layer):
"""
Creates a GeoJson which supports.
"""
_template = Template(u"""
{% macro script(this,kwargs) %}
var {{ this.get_name() }} = L.geoJson({{ this.data }},{
useSimpleStyle: true,useMakiMarkers: true
}
).addTo({{ this._parent.get_name() }});
{% endmacro %}
""")
default_js = [
('leaflet-simplestyle','https://unpkg.com/leaflet-simplestyle'),]
def __init__(self,data,name=None,overlay=True,control=True,show=True):
super(StyledGeoJson,self).__init__(name=name,overlay=overlay,control=control,show=show)
self._name = 'StyledGeoJson'
self.data = data
用法
output = {"type": "FeatureCollection","features": [ {"type": "Feature","geometry": {"type": "Point","coordinates": [103.815381,1.279109]},"properties": {"temperature": 24,"marker-symbol": "park","marker-color": "#AF4646"}},{"type": "Feature","geometry": {"type": "MultiLineString","coordinates": [[[103.809297,1.294906],[103.799445,1.283906],[103.815381,1.294906]]]},"stroke": "#AF4646"}}]}
m = folium.Map(location=[1.2791,103.8154],zoom_start=14)
StyledGeoJson(output).add_to(m)
m
结果
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。