geoandas根据给定坐标查找行点



我有一个geoandas文件,我正在寻找一种有效的方法来识别给定坐标的点。例如,我有一个像

这样的geopandas变量
gpd1 = gpd.read_file('file_path')

如果我有一个特定的point(20,30),我如何找到位置最接近或与给定点相同的gpd1行?我在想

select_point = gpd1[gpd1.geometry.x==point[0] & gpd1.geometry.y==point[1]]

但是我感觉这种方法对于大型数据集不是很有效。如果给定的点稍微偏离gpd1中的点,则此方法可能不起作用。

这个脚本以一种有效的方式为搜索点找到最近的几何形状(如果有几个几何形状在相同距离上):

import geopandas as gpd
from shapely import Point
file_gdf = gpd.GeoDataFrame(geometry=[Point(10, 10), Point(10, 0), Point(-15, 0)])
search_point = Point(0, 1)
search_point_gdf = gpd.GeoDataFrame(geometry=[search_point], crs=file_gdf.crs)
nearest_in_file_gdf = search_point_gdf.sjoin_nearest(
file_gdf[["geometry"]], distance_col="distance", rsuffix="nearest"
).set_index("index_nearest")
nearest_in_file_gdf = nearest_in_file_gdf.join(file_gdf, rsuffix="_nearest")
print(nearest_in_file_gdf)

结果:

geometry   distance          geometry_nearest
index_nearest
1              POINT (0.00000 1.00000)  10.049876  POINT (10.00000 0.00000)

最新更新