Центральная координата из списка узлов осмия

В настоящее время я пытаюсь извлечь координаты центра из списка узлов на основе извлечения 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тип данных, а не список. Пожалуйста, дайте мне знать, если я могу еще что-нибудь предложить!

0 ответов

Другие вопросы по тегам