提问人:forestbat 提问时间:7/30/2022 最后编辑:Michael Delgadoforestbat 更新时间:7/31/2022 访问量:100
如何在我的 geopandas 项目中获得正确的组?
How to get a correct group in my geopandas project?
问:
我正在制作一个项目,该项目可以找到与点或单个点最近的线串(模拟河流),如下所示:
linestrings points
linestring1 point1
linestring2 point4
linestring1 point2
linestring2 point5
linestring1 point3
linestring2 point6
我想按线串对数据帧进行分组以插入点,如下所示:
linestrings points
linestring1 point1
linestring1 point2
linestring1 point3
linestring2 point4
linestring2 point5
linestring2 point6
这样我就可以将 linestring1 捕捉到点 1、2、3 等。
但是,当我启动代码时,我只能看到 DataFrame 形式的 dtypes:
组如下所示:
很明显,我的努力失败了,在 pandas 的文档中,正确的组应该是这样的:https://pandas.pydata.org/docs/user_guide/groupby.html#dataframe-column-selection-in-groupby
那么我的问题是什么,我该如何解决呢?
这是我代码的一部分:
list_point_line_tuple = []
for point in gpd_nodes_df.geometry:
list_point_line_tuple.append((point.to_wkt(), geopandas_min_dist(point, gpd_network_df, 200).geometry.to_wkt()))
graph_frame = gpd.GeoDataFrame(list_point_line_tuple, columns=['near_stations', 'nearest_line'])
grouped_graph_frame = graph_frame.groupby('nearest_line', as_index=False)
答:
1赞
Michael Delgado
7/31/2022
#1
您根本无法对几何图形进行分组。它们不可散列,不能用作 pandas 索引。相反,请使用 Geopandas 的空间连接工具,例如 geopandas.sjoin_nearest
:
merged = geopandas.sjoin_nearest(points_geodataframe, lines_geodataframe, how='left')
有关详细信息,请参阅有关空间连接的 geopandas 文档。
评论
print(df)