Python - geo pandas gdf.geometry.buffer создает проблемы - PullRequest
0 голосов
/ 28 марта 2020

это мой первый вопрос здесь, поэтому, пожалуйста, будьте терпеливы со мной. Я пишу программу на Python, чтобы организовать некоторые пространственные данные из разных источников. В этой части кода я создаю геоданные (только точечные объекты) из двух csv-файлов. Я хочу объединить все точки из двух информационных фреймов в радиусе 150 метров. Поэтому я создаю буфер, а затем делаю пространственное соединение. Однако мне нужны оба кадра данных с точками для дальнейшей обработки данных позже. Поэтому я делаю копию БД, которая получает буфер. Объединение работает, но после этого оригинальный df (hikr_gdf) содержит полигоны, а не точки. Я не понимаю, так как я работаю не с hikr_gdf, а над buffer_gdf? Возможно, я наблюдаю за чем-то простым, но кто-то может помочь, пожалуйста?


gdfs = []
for file in files:
    df = pd.read_csv(file, delimiter=",")

    gdf = GeoDataFrame(
        df.drop(['latitude', 'longitude'], axis=1),
        crs={'init': 'epsg:4326'},  # wgs84
        geometry=[Point(xy) for xy in zip(df.longitude, df.latitude)])
    gdfs.append(gdf)

    gdf.to_file(f"{file[:-4]}_processed")

hikr_gdf = gdfs[0]
osm_gdf = gdfs[1]
hikr_gdf = hikr_gdf.to_crs({'init': 'epsg:3857'})
osm_gdf = osm_gdf.to_crs({'init': 'epsg:3857'})
hikr_gdf.to_file("../spatial_data/hikr_gdv.shp")

buffer_gdf = hikr_gdf
print(f"print1:\n{hikr_gdf.geometry}")

buffer_gdf.geometry = buffer_gdf.geometry.buffer(150)
print(f"print2:\n{hikr_gdf.geometry}")

hikr_gdf.to_file("../spatial_data/test.shp")

waypoints_gdf = gpd.sjoin(osm_gdf, buffer_gdf, how='left', op='within', lsuffix="osm", rsuffix='hikr')

проблема заключается в утверждении между двумя print-утверждениями. Вот вывод:

print1:
0      POINT (1238304.930 5936603.562)
1      POINT (1240420.095 5937074.189)
2      POINT (1241967.945 5936348.037)
3      POINT (1241604.869 5936252.491)
4      POINT (1258256.795 5973883.395)
                    ...               
478    POINT (1426811.788 6067915.272)
479    POINT (1430399.552 6066195.439)
480    POINT (1436366.417 6008753.012)
481    POINT (1437629.379 6017117.804)
482    POINT (1436299.730 6016980.603)
Name: geometry, Length: 483, dtype: geometry
print2:
0      POLYGON ((1238454.930 5936603.562, 1238454.208...
1      POLYGON ((1240570.095 5937074.189, 1240569.373...
2      POLYGON ((1242117.945 5936348.037, 1242117.223...
3      POLYGON ((1241754.869 5936252.491, 1241754.147...
4      POLYGON ((1258406.795 5973883.395, 1258406.073...
                             ...                        
478    POLYGON ((1426961.788 6067915.272, 1426961.066...
479    POLYGON ((1430549.552 6066195.439, 1430548.829...
480    POLYGON ((1436516.417 6008753.012, 1436515.695...
481    POLYGON ((1437779.379 6017117.804, 1437778.657...
482    POLYGON ((1436449.730 6016980.603, 1436449.008...
Name: geometry, Length: 483, dtype: geometry

Как я уже сказал, объединение работает правильно, но я хочу понять, почему изменился hikr_gdf? Спасибо за вашу помощь!

...