查找点属于哪个多边形 - 在 python 中

问题描述 投票:0回答:1

我有一个包含多边形(代表社区)的 SHP 文件和一个包含我所在城市谋杀案的 CSV 文件,其中包含事件发生地点的坐标。我需要找到每起谋杀案属于哪个社区,并将其注册到 CSV 中的新列中。

我知道这很容易,但我刚刚开始编程,我一生都做不到。我尝试过熊猫、geopandas 和 shapely。 我尝试将新数据添加到 df,然后将其附加到 CSV,但没有将数据添加到 DF。 我尝试在地理数据帧之间使用 gpd.sjoin 但该列总是以 NaN 值结束。

python pandas geopandas shapefile shapely
1个回答
0
投票

对于存在于多边形内的点,

gdp.sjoin
是正确的选择。请参阅下面的最小示例:

import geopandas
from geodatasets import get_path
from shapely.geometry import  Point

path_to_data = get_path("nybb")
gdf = geopandas.read_file(path_to_data)

# Point inside Manhattan
gdf_pt = geopandas.GeoDataFrame(geometry=[Point(-73.97, 40.78)],crs = 'EPSG:4326' )
gdf.sjoin(gdf_pt.to_crs(gdf.crs)) # returns Manhattan Boro

如果您的

sjoin

得到空值
  1. 尝试可视化您的点可能不完全位于多边形内的数据。
  2. 确保每个几何体使用相同的
    crs
  3. 如果您的点靠近但不在多边形内部,请尝试与
    sjoin_nearest
    一起使用(但这需要您试验参数以适合您的用例)
© www.soinside.com 2019 - 2024. All rights reserved.