Ускорение Geo pandas для выбора точек внутри многоугольника - PullRequest
0 голосов
/ 05 января 2020

У меня есть один набор данных с примерно 10 миллионами точек (широта). Я хотел бы выбрать точки, которые попадают в карту. У меня есть эта карта как объект Shaply (shp). Для этого я преобразовал локализацию каждой точки в объект Point, используя points_from_xy. Поэтому я преобразовал свой DataFrame в GeoDataFrame. Моя карта в форме объекта Multipolygon. Поэтому я использовал geometry.unary_union, чтобы преобразовать его в единый многоугольник (я не уверен, что это правильно). Затем я использовал метод within в Geo pandas, чтобы выбрать точки внутри карты.

    import pandas as pd
    import geopandas as gpd
    from tqdm import tqdm

    map = gpd.read_file('foo.shp')
    df = pd.read_csv('foo1.csv')
    points = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.longitude, df.latitude))
    map = map.geometry.unary_union
    within_points = [points.geometry[i].within(map) for i in tqdm(range(points.geometry.count()))]
    within_points = points[within_points]

Моя проблема в том, что этот процесс занимает слишком много времени (около 5 дней на моем основном ноутбуке i5). Я хотел бы знать, есть ли способ ускорить его.

...