如何用Python中的Geopandas测试Point是否在Polygon / Multipolygon中?

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

我从网站上获得了美国各州的多边形数据arcgis而且我还有一个具有城市坐标的Excel文件。我已将坐标转换为几何数据(点)。现在,我想测试这些积分是否在美国。两者都是dtype:geometry。我以为我可以轻松进行比较,但是当我使用自己的代码时,对于每个Point我都会得到错误的答案。即使美国有积分。

代码是:

import geopandas as gp
import pandas as pd
import xlsxwriter
import xlrd
from shapely.geometry import Point, Polygon

df1 = pd.read_excel('PATH')
gdf = gp.GeoDataFrame(df1, geometry= gp.points_from_xy(df1.longitude, df1.latitude))

US = gp.read_file('PATH')

print(gdf['geometry'].contains(US['geometry']))

有人知道我做错了吗?

python pandas polygon point geopandas
1个回答
0
投票

contains在GeoPandas中当前是成对工作,一对一而不是一对多。为此,请使用sjoin

points_within = gp.sjoin(gdf, US, op='within')

这将仅返回US中的那些点。另外,您可以过滤包含点的多边形。

polygons_contains = gp.sjoin(US, gdf, op='contains')
© www.soinside.com 2019 - 2024. All rights reserved.