Здравствуйте уважаемые форумчане!
Вопросы новичков прочёл, не нашел необходимой мне информации, решил создать отдельную тему.
В данной теме я начинающий, поэтому заранее извиняюсь за неточности и скудоумие в тексте ниже.
С 2019 в качестве хобби начал разрабатывать приложение для расчёта зон покрытия радиоисточников и оптимизации их размещения.
Так как в организации, где я работаю, были специалисты по работе с ГИС “Панорама”, приложение было написано на с++ в среде Qt5 с использованием проприентарных библиотек ГИС-конструктор + mapapi.h. В приложении используются векторные карты формата sxf.
Коллегам приложение понравилось, и в настоящий момент некоторые из них его используют как средство поддержки принятия решений.
Как-то однажды наткнулся на видеоурок по QGIS и подключению к ней различных геосервисов, в первую очередь Openstreetmap.
В тех картах sxf, которые я использовал ранее, имеются векторные слои, которые используются в моих расчётах, то есть создается т.н. модель препятствий, и используются в основном данные о рельефе, городской застройке, высоте леса и некоторые другие данные, влияющие на распространение радиоволн.
В семантических данных объектов с сервиса OSM имеется БОЛЕЕ актуальная полезная информация (например, количество этажей в здании, да и вообще здания), в то время как в sxf у меня имеется только полигон с названием типа “квартал плотной застройки”…
В силу этих причин я решил попробовать переписать свою программу с использованием набора векторных карт, выкачанных с planet.openstreetmap.org.
Для разминки написал скрипт на python, используя библиотеки qgis, который может извлекать информацию из подгруженных векторных слоёв shp,
а в качестве растровой подложки отрисовывать данные с osm.
В силу определенных причин в нашей организации используется только закрытая корпоративная сеть, никакой интернет использовать нельзя;).
Поэтому возникла необходимость в организации автономного сервиса, подобного osm.
В общем, первичный замысел у меня приблизительно таков (у меня в нем много сомнений, но о них ниже):
-
Написать клиентское приложение для необходимых расчётов и их визуализации, которое будет использовать какие-то необходимые векторные слои, но для удобства, обращение к этим слоям должно происходить как бы “под капотом” приложения, то, что должен
делать пользователь - видит карту openstreetmap, (при необходимости как-то управляет стилем отображения, например, если нужен только рельеф или застройка города, то в каком-то меню галочку ставим и т.д., убирая лишнее с карты), наносит некоторые векторные значки (ретрансляторы, базовые станции), после расчётов получает полупрозрачные зоны покрытия, отрисованные поверх подложки в отдельном слое. Причем должна быть возможность сохранения этих слоев (с расположениями радиоисточников и их зон покрытия), т.е. пользователь может сохранять различные сценарии расчётов.
Приложение планируется на python + Qt5 + различные импорты из qgis. -
Поднять в локальной сети организации тайловый сервер для отрисовки растровой подложки
-
Хранение векторных слоёв, необходимых для расчёта, реализовать либо вместе с клиентским приложением, либо в каком-нибудь сетевом хранилище и их подгружать по необходимости
Ознакомился с инструкцией https://wiki.openstreetmap.org/wiki/RU:%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_OSM-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0
Начал работать по ней, дошёл до установки mapnik, но возникли опасения, а всё ли из данной инструкции мне нужно? Тем более она написана довольно давно (в 2015г), соответственно граблей будет довольно много.
В настоящий момент поставил Ubuntu, развернул RAILS OSM, изучаю материал.
Я пока не силен в понимании всех технологий, что у них “под капотом”, но изначально хотелось бы сократить количество своих неверных “концептуальных решений”.
Хотел бы спросить тех, кто в “данной теме” дольше, чем я:
- Подойдёт ли для моих задач классический набор из большинства HowTo, а именно:
RAILS OSM (локальный openstreetmap.org)
PostgreSQL + PostGIS (БД)
apache + mod_tile (веб-сервер + кеширование тайлов)
mapnik (рендерер, управление стилем отображения, визуализация векторных данных)
renderd (оптимизация запросов на рендеринг)
osmosis или osm2pgsql (иногда наверное надо будет как-то обновлять данные из openstreetmap)
Openlayer или Leaflet (для работы с html)
Что из этого списка может быть избыточным? Или может что-то добавить?
-
Что-то мне подсказывает, что я могу из pbf извлекать данные для работы с векторными слоями и одновременно их (через mapnik) отрисовывать.
Но пока в понимании у меня небольшая каша) -
Первая самая важная задача, которую необходимо реализовать - открыть (без обращения к интернет) какую либо карту города, получить картинку, такую же как и с использованием openstreetmap, при этом получить данные о координатах и семантике растительных покрытий, рельефе, городской застройке. Как-то так.
Прощу советов у сообщества и знающих людей.
Заранее премного благодарен!