我如何测试 Point 是否在 Polygon/Multipolygon 中,geopandas 在 Python 中?
How do I test if Point is in Polygon/Multipolygon with geopandas in Python?
我从网站上获得了美国各州的多边形数据
arcgis
我还有一个包含城市坐标的 excel 文件。我已将坐标转换为几何数据(点)。
现在我想测试积分是否在美国。
两者都是 dtype:geometry。我认为我可以很容易地进行比较,但是当我使用我的代码时,我得到的每个点的答案都是错误的。即使有积分在美国。
密码是:
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']))
有人知道我做错了什么吗?
GeoPandas 中的 contains
目前以一对一的方式工作,而不是一对多。为此,请使用 sjoin
.
points_within = gp.sjoin(gdf, US, op='within')
这将 return 只有 US
内的那些点。或者,您可以过滤包含点的多边形。
polygons_contains = gp.sjoin(US, gdf, op='contains')
我从网站上获得了美国各州的多边形数据 arcgis 我还有一个包含城市坐标的 excel 文件。我已将坐标转换为几何数据(点)。 现在我想测试积分是否在美国。 两者都是 dtype:geometry。我认为我可以很容易地进行比较,但是当我使用我的代码时,我得到的每个点的答案都是错误的。即使有积分在美国。
密码是:
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']))
有人知道我做错了什么吗?
contains
目前以一对一的方式工作,而不是一对多。为此,请使用 sjoin
.
points_within = gp.sjoin(gdf, US, op='within')
这将 return 只有 US
内的那些点。或者,您可以过滤包含点的多边形。
polygons_contains = gp.sjoin(US, gdf, op='contains')