У меня есть геодатафр, показывающий ~ 25 местоположений, представленных как точечная геометрия.Я пытаюсь придумать сценарий, который проходит через каждую точку, идентифицирует ближайшее местоположение и возвращает название ближайшего местоположения и расстояние.
Я легко могу это сделать, если у меня есть разные геоданные, использующие ближайшие_пункты (geom1, geom2) в библиотеке shapely.ops.Однако все мои местоположения хранятся в одном геоданных.Я пытаюсь выполнить цикл, и вот где у меня возникают проблемы
Вот мой пример файла:
geofile=gpd.GeoDataFrame([[0,'location A',Point(55,55)],[1,'location B',Point(66,66)],[2, 'Location C' ,Point(99,99)],[3, 'Location D' ,Point(11,11)]],columns=['ID','Location','geometry'])
Вот цикл, который я создаю безрезультатно.
for index, row in geofile.iterrows():
nearest_geoms=nearest_points(row, geofile)
print('location:' + nearest_geoms[0])
print('nearest:' + nearest_geoms[1])
print('-------')
Я получаю эту ошибку:
AttributeError: 'Series' object has no attribute '_geom'
Однако я думаю, что моя проблема выходит за рамки ошибки, так или иначе, я должен исключить строку, которую я повторяю по причине, которая автоматически вернется в качестве ближайшего местоположения.поскольку это то место.
Мой конечный результат для одного местоположения будет следующим:
([0,'location A','location B', '5 miles', Point(55,55)], columns=['ID','Location','Nearest', 'Distance',geometry'])