Проверьте точки внутри полигона от геоданных - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть шейп-файл индийских округов:

full_state_df = gpd.read_file("kerala/shapefiles/district.shp")
print (full_state_df.head())

Результат:

    DISTRICT  ...                                           geometry
0  Alappuzha  ...  POLYGON ((76.37334 9.83565, 76.37955 9.82888, ...
1  Ernakulam  ...  POLYGON ((76.68924 10.26721, 76.68724 10.26170...
2     Idukki  ...  POLYGON ((77.28895 10.22973, 77.29462 10.21643...
3     Kannur  ...  POLYGON ((75.46997 12.30049, 75.48558 12.29131...
4  Kasaragod  ...  POLYGON ((75.41667 12.50166, 75.42240 12.48463...

У меня есть файл CSV, в котором перечислены вышки сотовой связи.

radio,mcc,net,area,cell,unit,lon,lat,range,samples,changeable,created,updated,averageSignal
GSM,405,67,5021,21106,0,87.192306518555,22.334518432617,1000,1,1,1459748781,1459748781,0
GSM,405,752,7302,57151,0,86.663589477539,22.370223999023,1000,1,1,1459748770,1459748770,0
GSM,405,852,51,3066,0,77.056045532227,11.272659301758,1000,1,1,1459682666,1459682666,0
...

Я хочу отфильтровать линии для точек, которые l ie в пределах указанного района. Скажем, например, я выбираю Алаппужу:

patch_df = full_state_df.loc[full_state_df['DISTRICT'] == 'Alappuzha']

... и получаю:

    DISTRICT  ...                                           geometry
0  Alappuzha  ...  POLYGON ((76.37334 9.83565, 76.37955 9.82888, ...

Как мне 1) извлечь ПОЛИГОН и проверить, лежит ли длинный лат в что?

1 Ответ

0 голосов
/ 06 апреля 2020

IIU C, вы можете сделать это, если вы используете геоданные в качестве точек и полигонов. Points_in_polygon_gdf будет содержать точки, которые находятся в каждом районе.

points_in_polygons_gdf = gpd.sjoin(points_gdf, polygons_gdf, op='within', how='inner')
...