Используя Geopandas, как мне выбрать все точки не в пределах многоугольника? - PullRequest
0 голосов
/ 02 октября 2018

У меня есть DataFrame, содержащий чикагские адреса, которые я геокодировал в значения широты и долготы, а затем в объекты Point (делая DataFrame GeoDataFrame).Небольшая часть была неправильно геокодирована со значениями LatLong за пределами Чикаго.У меня есть шейп-файл для границы Чикаго (GeoDataFrame), я хочу выбрать все строки, где точки находятся за пределами полигона Чикаго.

Было бы легко выбрать все точки в пределах многоугольника (с помощью функции геопандаса sjoin), но я не нашел хорошего способа выбрать точки, находящиеся вне полигона.Один существует?

1 Ответ

0 голосов
/ 02 октября 2018

Если вы преобразуете границу Чикаго GeoDataFrame в один многоугольник, например, с помощью:

chicago = df_chicago.geometry.unary_union

, тогда вы можете использовать булеву фильтрацию с оператором within для выбора точек внутри и за пределами Чикаго:

within_chicago = df[df.geometry.within(chicago)]
outside_chicago = df[~df.geometry.within(chicago)]

с использованием ~ для инвертирования логического условия.

В качестве альтернативы можно использовать пространственный предикат disjoint:

outside_chicago = df[df.geometry.disjoint(chicago)]
...