[英]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的要旨是,首先找到与索引可能的匹配项(有些误报,但没有误报),然后找到精确的匹配项。
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.