【问题标题】:How do I test if Point is in Polygon/Multipolygon with geopandas in Python?如何在 Python 中使用 geopandas 测试 Point 是否在 Polygon/Multipolygon 中?
【发布时间】:2020-10-06 04:50:50
【问题描述】:

我从网站上获得了来自美国的 Polygon 数据 arcgis 我还有一个带有城市坐标的excel文件。我已将坐标转换为几何数据(点)。 现在我想测试点是否在美国。 两者都是dtype:几何。我想用这个我可以很容易地比较,但是当我使用我的代码时,我得到的每个点的答案都是错误的。即使有在美国的点。

代码是:

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】:

GeoPandas 中的contains 目前以一对一的方式工作,而不是一对多。为此,请使用sjoin

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

这将只返回US 中的那些点。或者,您可以过滤包含点的多边形。

polygons_contains = gp.sjoin(US, gdf, op='contains')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多