如何解决产生缓冲区半径多边形-可能的投影问题 1创建df 2从gdf 3重新投影到使用仪表的CRS并在每个Point周围计算10KM buffer_radius 4将“几何”列更改为新的buffer_radius列 5重新投影到CRS,让我可以制作剧情: 6产生最终情节:
我创建了一个带有点geometry
列的GeoDataFrame:
1。创建df
df = pd.DataFrame([[51.502687,-3.538329,2242,1,47],[52.699185,-0.050122,870,2,35],[51.574387,0.397882,651,3,[51.43874,0.395791,625,4,[51.23965,0.561919,614,5,36]],columns = ["lat","long","num_of_trucks","performance","num_of_routes"]
)
df
2。从gdf
创建df
gdf = gpd.GeoDataFrame(df,geometry=gpd.points_from_xy(df["lat"],df["long"]),crs={"init": "epsg:4326"})
gdf
3。重新投影到使用仪表的CRS并在每个Point周围计算10KM buffer_radius
gdf.to_crs(epsg=3395,inplace=True)
#gdf.to_crs(epsg=3857,inplace=True)
#gdf.to_crs(epsg=27700,inplace=True)
gdf["buffer_radius"] = gdf.geometry.buffer(10000)
4。将“几何”列更改为新的buffer_radius
列
gdf = gdf.set_geometry('buffer_radius')
gdf.geometry.name
Out: 'buffer_radius'
上面的过程似乎产生了我想要的GeoDataFrame gdf
,其中包含名为多边形的新“ geometry”列buffer_radius
。
然后我想绘制这些新创建的多边形,因此首先我转换了buffer_radius
列的CRS:
5。重新投影到CRS,让我可以制作剧情:
gdf.to_crs(epsg=4326,inplace=True)
6。产生最终情节:
然后我尝试绘制多边形,但是它返回了一个空图:
gv.Polygons(gdf)
我的地块返回空白的事实让我想知道这是否可能是投影问题?
有人知道我在做什么错吗?任何想法或建议将不胜感激。
谢谢
解决方法
这显然是geoviews
的问题,它不使用活动的几何列,而是使用称为geometry
的默认列。如果仅使用缓冲区(gdf["geometry"] = gdf.geometry.buffer(10000)
覆盖几何列,或确保要绘制的数据框在几何列中具有所需的几何,则它应该可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。