citec-spbu / city-view

0 stars 0 forks source link

Изменить пользовательский интерфейс плагина и добавить выбор города #30

Closed nermakovaa closed 9 months ago

nermakovaa commented 9 months ago

Попытаться добавить виджет с выбором города в https://github.com/webebers/city-view-back.git

nermakovaa commented 9 months ago

Добавила виджет с выбором слоя https://github.com/webebers/city-view-back.git

image

Для примера подгрузила несколько слоев с использованием overpass API, весь код находится в файле test_plugin.py (функция - run(self)), столкнулась с проблемой отображения JSON в qgis, несмотря на то, что данные подгружаются (можно увидеть в отладке), возникает проблема с их отображением, нужна помощь в отображении @GeorgiySurkov

nermakovaa commented 9 months ago

Опиралась на этот туториал https://dothanhlong.org/qgis-3-plugins-build-your-first-plugin/

GeorgiySurkov commented 9 months ago

Привет

А ты пыталась добавить слой с тем, что отдал overpass api? Он возвращает данные в формате osm, а qgis сам не может с таким форматом работать. Я переводил эти данные сначала в geojson. Уже с ним qgis умеет работать.

nermakovaa commented 9 months ago

@GeorgiySurkov Попробовала, но он все равно выдает ошибку и не может данные считать, ты пробовал это все через консоль реализовать? В этом может быть проблема

Image

nermakovaa commented 9 months ago

@GeorgiySurkov можешь посмотреть каким образом я это делала в [test_plugin.py] и скорректировать (последний коммит - не забудь раскомитить эту часть и закомитить предыдущий run), чтобы отладить, не стесняйся вносить изменения в репозиторий

GeorgiySurkov commented 9 months ago

Я osm вывод из overpass конвертировал в geojson с помощью npm пакета osmtogeojson, но нам точно надо другой какой-то постараться найти из экосистемы питона. Судя по консоли, у тебя как раз до сих пор плагин пытается добавить слой с данными в osm формате.

Вообще стоит попробовать сразу сохранять вывод overpass API в spatialite.

nermakovaa commented 9 months ago

@WenFutao @GeorgiySurkov спустя множество попыток у меня получилось преобразовать данные, которые мы получаем от overpass API (в json изначально) в geojson, и добавить слой с ними в qgis - при этом все это происходит при нажатии на виджет 'Выбора города'. Я решила начать с малого и добавила небольшой участок со зданиями - подробнее в overpassquery ((.;>;); - добавление этой части позволяет нам не получать пустой запрос) ''' [out:json]; ( way["building"](poly:"59.971389 30.252778 59.971111 30.262500 59.973333 30.262222 59.973611 30.252500 59.971389 30.252778"); ); (._;>;); out body; '''

Чтобы обработать данные мне потребовалось создать список словарей где ключом является id ноды, а значением - координаты точки (широта и долгота). Я использую geopandas.

image

Я обновлю код в репозитории. В ближайшее время мы должны подумать как можно таким же образом добавить дороги и перекрестки. Мы можем работать с таким слоем?

nermakovaa commented 9 months ago

залила все в эту папку, поскольку каждый раз весь проект пересобирается, не стала в master добавлять https://github.com/webebers/city-view/tree/new_branch/test_plugin_new