LINUX.ORG.RU

Нужна помощь, совет по програмированию в qgis на python.

 , , , ,


1

2

Как любитель туризма хочу создать электронную карту, (вернее программу которая создаёт нужную карту любого квадрата):

Большой масштаб - топографическая (500, 200, 100, 50) из общедоступных. Меньший масштаб - спутниковые снимки.

Карта в формате растр, как подложка для дальнейшей работы.

  • Для загрузки карт выбранного квадрата использую скрипт: maps-download.sh как параметр запуска номер квадрата карты. Готовый!
  • Подгружаю карты в qgis: maps-load_raster_layer.py

Пока скрипт только подгружает карты в qgis.

Что я хочу от скрипта:

1 Электронная топографическая карта.

  • Создать проект с картами
  • Добавить в проект карты указанных квадратов. Сделано, работает в последних версиях qgis где нормально поддерживается формат map.
  • Установка видимости слоёв в пределах масштаба:
    Пример:
    500000 > 500k >= 250000
    250000 > 200k >= 100000
    100000 > 100k >= 50000
    50000   > 50k   >= 25000
    
    При изменении масштаба слои должны меняться. (делал вручную)
  • «Обрезание» краёв (полей) каждой карты, бесшовное сшивание слоёв карты одного масштаба с обрезкой всех полей. Это самое сложное и есть моим вопросом.. Наверно надо накидать шаблоны полигонов (карты одного масштаба и одной широты должны иметь идентичный шаблон). Этот шаблон, полигон теоретически должен математически рассчитываться, и дале его можно было бы только сдвигать по широте... Скрипт должен пообрезать загружённые слои карт согласно шаблону, или создать прозрачный альфаканал. (это вообще не получается)

2 Электронная спутниковая карта масштаба <25000

  • Дёрнуть с гугла, яндекса спутниковую карту заданого квадрата, нужных масштабов и добавить в проэкт gqis

topography.tar.xz

Генерируемая программой растровая подложка может использоваться не только туристами для планирования маршрута но и для навигаторов и больше:

Когда то люди записывали всё в книгах:

Попытка обновить это издание сообща в интернете: «Большая книга » хороша, но сегодня можно намного больше!

Все отчеты, видео и фото можно, и я считаю нужно привязывать к GIS. Тогда все достопримечательности и сложности можно будет сразу увидеть подключив дополнительные слои на карте, и рассмотреть просто нажав ссылку.

Сообща обновлять и поддерживать каталог баз, по номерам квадратов карт и видам туризма.

На лоре что совсем нет туристов? Любых: вело, водный, лыжный, пешеходный, даже диванных (которые только рассматривают красивые фото и видео разных мест нашей необъятной родины)?

multihead
() автор топика

карты одного масштаба и одной широты должны иметь идентичный шаблон

Вообще не факт. Я прошлый год, вроде, с того же сайта карты брал. Не сходятся вообще, даже два соседних квадрата. То ли сканы там кривые, то ли изначально карты такие.

Можно, конечно, попытаться как-то определять полигоны автоматом, но это надо уже какую-то систему распознавания городить.

А так, перспективу можно исправить имиджмаджиком (python imaging library), там как раз есть то, что ты хочешь — исправление геометрии по полигону. Там даже несколько вариантов преобразований есть: простое аффинное; по четырём точкам; по полигону и полиномиальное, для исправления геометрических аберраций.

С такими картами тебе, скорее всего, придётся использовать последний вариант :(

А с qgis'ом я дела не имел.

Ссылочки: http://docs.qgis.org/2.8/ru/docs/pyqgis_developer_cookbook/ (эту ты, вероятно, открывал) http://www.imagemagick.org/Usage/distorts/ http://effbot.org/imagingbook/image.htm (ищи «transform» на странице)

Похоже в PIL нету поиномиального искривления. Или я не разобрался.

Ещё для сшивания картинок в панорамы можно попробовать использовать Hugin, но я сильно сомневаюсь, что что-то получится без предварительной обрезки полей. Там есть какие-то маски, но я в них тоже ничего не понял. Интерфейс у него ужасный. А из удобного — там можно фичи вручную расставлять, или с автоопределением совпадения на втором снимке. Потом по этим фичам он трансформируети и сшивает. Трансформирует хорошо, но вот с автоопределением фич на низких разрешениях — беда.

anonymous
()
Ответ на: комментарий от anonymous

Вообще не факт. Я прошлый год, вроде, с того же сайта карты брал. Не сходятся вообще, даже два соседних квадрата. То ли сканы там кривые, то ли изначально карты такие.

У меня qgis карты размещает идиально в стык, на мониторе - пиксель в пиксель. Единственная проблема в полях.. они зас\лоняют часть карты которая под ними, их надо сделать или прозрачными или обрезать.

Обрезать надо только в qgis или другой ГИС чтобы не потерять привязку к координатам!

Пока уверен что шаблон с полигоном карты будет одинаков для всех карт одного масштаба лежащих на одной широте. Но руками рисовать его пока воздерживаюсь, собираюсь рассчитать.

QGIS имеет все встроенные средства для обрезки и сшивки растров при этом сохраняя привязку к координатам. Кроме того мне надо именно программу, а не разовую ручную работу.

multihead
() автор топика
Ответ на: комментарий от anonymous

Документацию просмотрел. Первые два пункта помогла решить:

Загрузка, создание проекта http://documentation.qgis.org/2.8/en/docs/pyqgis_developer_cookbook/loadproje...

Загрузка растровых карт: http://documentation.qgis.org/2.8/de/docs/pyqgis_developer_cookbook/loadlayer...

Уже сделано в maps-load_raster_layer.py

Назначение видимости в пределах масштаба делал руками через гуй, получается. Обрезку тоже можно через гуй сделать. Как это сделать в питоне пока не нашёл... пришёл за помощью.

В qgis есть универсальная возможность выполнить в скрипте любую функцию графического интерфейса с нужными параметрами...

Также есть куча готовых плагинов: http://plugins.qgis.org/plugins/ например «raster-transparency-1.0» чтобы не портить привязки карты, а только сделать её поля прозрачными...

multihead
() автор топика
Ответ на: комментарий от slovazap

Очень высоко ценю работу проекта OpenStreetMap, но для того чтобы увидеть разницу надо посмотреть хоть на старые топографические карты.

Скачай любой квадрат скриптом прикреплённым к теме, и также посмотри спутниковые карты с разрешением 1см:10м. Сравни с OpenStreetMap.

Он не подходит для туризма, надо именно топографические карты при большом масштабе и спутниковые при малом.

К стати этим модулем: https://github.com/gacarrillor/loadthemall скачаные карты тоже легко подгрузить в qgis

multihead
() автор топика
Ответ на: комментарий от multihead

Очень высоко ценю работу проекта OpenStreetMap, но для того чтобы увидеть разницу надо посмотреть хоть на старые топографические карты.

Спасибо, я уже насмотрелся. Старые топографические карты - по сравнению с OSM в более-менее сносно обрисованных районах - мусор, даже не учитывая насколько они устарели. А в районах которые собираюсь посетить я, OSM становится обрисован куда лучше чем «сносно». Кроме того, вы говорите про растр, а он вообще непригоден к использованию на местности.

В общем, могу только посоветовать тратить время на улучшение OSM в ваших краях, коли уж он вас там не устраивает, а качалки ваши даром не нужны.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Думал уже, не устраивает меня OSM и рисовал его.. 99,9 необходимого - белый лист.

Да растр тяжелый очень, но пока решил так и альтернатив не вижу.

Надо именно скрипт создающий карту квадрата, ибо и топографические карты меняются и особо спутниковые. Русла рек ежегодно меняются, не реально их рисовать. А топография + спутник = просто супер! Поверху накладывать векторный слой с пометками ссылками и прочим..

Давайте перейдём к qgis & python.

multihead
() автор топика

topography.tar.xz

Запустить maps-download.sh с именем квадрата карты

Запустить qgis создать пустой проект и в консоль python в qgis скопипастить maps-load_raster_layer.py

Жду предложений по обрезке и шаблонах полиномов.

multihead
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.