Центральная координата из списка узлов осмия
В настоящее время я пытаюсь извлечь координаты центра из списка узлов на основе извлечения osm. Одиночные узлы в порядке, и я еще не рассматривал отношения для типа данных osmway
Я назначил местоположения путям с помощью инструмента командной строки:
osmium add-locations-to-ways input.osm.pbf o- ouput.osm.pbf
это добавляет местоположения в виде WayNodeList в форме:
nodes = [255004460@30.243242/59.995965,255004461@30.241552/59.996002,255004462@30.241600/59.996622,1893753076@30.242206/59.996626,255004464@30.243305/59.996519,255004460@30.243242/59.995965]
Во-первых, что касается извлечения каждой координаты для вычисления центроида, это очень громоздко, по крайней мере, для моего варианта использования, во-вторых, есть ли эффективный способ получить центр / центроид этого списка, предоставленный инструментом или библиотекой osmium?
Моя методология извлечения соответствующих данных соответствует классу, заданному в ответе на этот вопрос, но в случае, если чего-то нет, я начал писать функцию калькулятора центроидов, которая в настоящее время является WIP, но я вставьте сюда текущий код для ясности:
def centroid_calc(L):
lat = []
long = []
for l in L:
lat.append(l[0])
long.append(l[1])
l = sum(lat) / len(lat)
lo = sum(long) / len(long)
return [l,lo]
Я просмотрел документацию, предоставленную osmium относительно WayNodeLists
но я должен признать, что мне трудно все это понять.
Также ошибка, с которой все это началось:
AttributeError: 'osmium.osm._osm.Way' object has no attribute 'location'
Идеальный выход - просто получить единый набор координат из Way
тип данных, а не список. Пожалуйста, дайте мне знать, если я могу еще что-нибудь предложить!