如何解决Folium 和 Geopandas 对象
我在使用 geopandas 数据框绘制 folium Choropleth 地图时遇到问题。
我的数据框的结构如下:
Attribute int64
geometry geometry
Hex_ID object
dtype: object
| Attribute | geometry | Hex_ID |
|:----------|:---------------------|--------------:|
|500 |MULTIpolyGON(((... |892681a02affff |
|1000 |MULTIpolyGON(((... |892681b0187ffff|
|... |... |... |
|5000 |MULTIpolyGON(((... |892681a9c03ffff|
现在我可以用大叶草来绘制这个图。下面我张贴了这张图片。
m = folium.Map(location=location,zoom_start=13)
folium.GeoJson(data=gdf.geometry).add_to(m)
但是,尝试绘制等值线会导致错误。
m = folium.Map(location=location,zoom_start=13)
folium.Choropleth(
geo_data=gdf,name='Choropleth',data = gdf,columns=['Attribute','Hex_ID'],key_on='feature.properties.Attribute',fill_color='YlGnBu',fill_opacity=1,line_opacity=0.2,legend_name='Attribute').add_to(m)
>>>> TypeError
Traceback (most recent call last)
<ipython-input-290-6c7f7f467ef4> in <module>
11 fill_opacity=1,12 line_opacity=0.2,---> 13 legend_name='Attribute').add_to(m)
14
~\anaconda3\lib\site-packages\folium\features.py in __init__(self,geo_data,data,columns,key_on,bins,fill_color,nan_fill_color,fill_opacity,nan_fill_opacity,line_color,line_weight,line_opacity,name,legend_name,overlay,control,show,topojson,smooth_factor,highlight,**kwargs)
1211 if color_data is not None and key_on is not None:
1212 real_values = np.array(list(color_data.values()))
-> 1213 real_values = real_values[~np.isnan(real_values)]
1214 _,bin_edges = np.histogram(real_values,bins=bins)
1215
TypeError: ufunc 'isnan' not supported for the input types,and the inputs Could not be safely coerced to any supported types according to the casting rule ''safe''
我认为这可能是由于有多个多边形或可能是因为 Hex_ID 作为对象被传递。
我也尝试将其转换为 geoJson,但似乎无法正确执行。
这样会报错。
gpd.GeoSeries([gdf]).__geo_interface__
>>>> ValueError: UnkNown geometry type: featurecollection
但是这样做会让我遍历每一行并以某种方式将它们串在一起,我不知道如何。
gpd.GeoSeries([gdf.geometry[0]).__geo_interface__
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。