Как проверить, содержится ли какая-либо точка из списка точек в любом многоугольнике из списка многоугольников? - PullRequest
1 голос
/ 18 апреля 2019

У меня следующая проблема: у меня есть список изогнутых точек и список изогнутых многоугольников. Теперь я хочу проверить, в каком полигоне находится данная точка.

На данный момент я использую следующий код, который кажется не очень умным:


# polygons_df is a pandas dataframe that contains the geometry of the polygons and the usage of the polygons (landuses in this case, e.g. residential)

# point_df is a pandas dataframe that contains the geometry of the points and the usage of the point (landuses in this case, e.g. residential)

# polylist is my list of shapely polygons

# pointlist is my list of shapely points 

from shapely.geometry import Point, Polygon
import pandas as pd
import geopandas as gpd

i = 0
while i < len(polygons_df.index):
    j = 0
    while j < len(point_df.index):
        if polylist[i].contains(point):
            point.at[j, 'tags.landuse'] = polygons_df.iloc[i]['tags.landuse']
        else:
            pass
        j += 1
    i += 1

Могу ли я как-нибудь ускорить это? У меня более 100.000 точек и более 10.000 полигонов, и эти циклы занимают время. Спасибо!

...