Как проверить, находится ли точка в многоугольнике / мультиполигоне с geo pandas in Python? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть данные Polygon из Штатов из США с сайта arcgis , а также у меня есть файл Excel с координатами городов. Я преобразовал координаты в геометрические данные (точки). Теперь я хочу проверить, находятся ли очки в США. Оба типа dtype: geometry. Я думал, что с этим я легко могу сравнить, но когда я использую свой код, я получаю для каждого Point ответ false. Даже если есть точки, которые находятся в США.

Код:

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']))

Кто-нибудь знает, что я делаю не так?

1 Ответ

1 голос
/ 16 июня 2020

contains в Geo. Pandas в настоящее время работает попарно 1 к 1, а не 1 ко многим. Для этой цели используйте sjoin.

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

Это вернет только те точки в пределах US. Кроме того, вы можете фильтровать полигоны, содержащие точки.

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