Tengo dos conjuntos de datos, uno con el nombre del polígono y el polígono y otro con el nombre de la ubicación y la latitud y longitud.
Datos 1 (Geopandas Dataframe)
import geopandas as gpd
data_poly = gpd.read_file(path + "Data_community_file.geojson")
COMMUNITY NAME POLYGON
New York MULTIPOLYGON (((55.1993358199345 25.20971347951325,
55.19385836251354 25.20134197109752.... 25.20971347951325)))
Chennai MULTIPOLYGON (((65.1993358199345 22.20871347951325,
55.19325836251354 15.20132197109752 .... 15.20971347951325)))
Datos 2 (Marco de datos)
STOP NAME LONGITUDE LANGITUDE
Chennai main stop 55.307228 25.248844
Cabra stop 55.278824 25.205862
USA stop NY 55.069368 24.973946
Si el dato 2 (nombre_parada) está dentro del dato 1 (polígono) hay que extraer el nombre del polígono. Es decir, si la parada USA NY está presente en cualquier "New York" hay que añadir el nombre en la nueva columna en data2.(Hay que convertir la lat y lot a formato Point(Lat,Lon) para el código de abajo).
Código de ejemplo :
import json
from shapely.geometry import shape, Point
# depending on your version, use: from shapely.geometry import shape, Point
# load GeoJSON file containing sectors
with open('sectors.json') as f:
js = json.load(f)
# construct point based on lon/lat returned by geocoder
point = Point(-122.7924463, 45.4519896)
# check each polygon to see if it contains the point
for feature in js['features']:
polygon = shape(feature['geometry'])
if polygon.contains(point):
print(feature)
El código anterior será capaz de extraer el polígono basado en el "Punto". ¿Cómo aplicar lo mismo para el marco de datos en el lugar del punto?