繁体   English   中英

如何在线条上使用GeoPandas空间索引?

[英]How to use GeoPandas Spatial Index with lines?

我正在尝试找到最接近一堆点的线(大约240亿点,400万线)。 这些点存在于一个GeoDataFrame中,而线存在于另一个GeoDataFrame中。 我尝试遵循以下步骤: https : //github.com/geopandas/geopandas/issues/140 ,并且这样做:

lines_sidx = lines_df['geom'].sindex
[list(lines_sidx.intersection((points.loc[i,'geom'].y, points.loc[i,'geom'].x))) for i in range(len(points))]

这只会返回一个空列表列表。 这里发生了什么?

(请注意,我将其应用于两个数据集中的前100条线和点)。

您的问题以您要执行最近邻居查询的上下文为开头,但是您的问题本身询问的是那个地理熊猫交集代码块中的情况。 我将尝试解决您的问题,而不是其序言,因为它们似乎不一致。 看来您的交集代码逻辑已关闭。 在空间相交处使用rtree的要旨是,首先找到与索引可能的匹配项(有些误报,但没有误报),然后找到精确的匹配项。

像这本geopandas r-tree教程中所示的那样

spatial_index = gdf.sindex
possible_matches_index = list(spatial_index.intersection(polygon.bounds))
possible_matches = gdf.iloc[possible_matches_index]
precise_matches = possible_matches[possible_matches.intersects(polygon)]

如果您尝试使用一组点和一组线进行最近邻搜索,则可能所有要素都不相交,这可能会返回空集的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM