Работаем с QGIS. Начало работы. Наложение растрового изображения.


Скачиваем обе версии QGIS: 2-я и 3-я с сайта https://qgis.org/ru/site/
Почему обе версии? Дело в том, как показывает практика, 3-я версия не отличается стабильностью, но обладает бОльшими возможностями. Поэтому работать будем во 2-й версии. А к 3-й обращаться будем лишь за дополнительными инструментами..

Сразу предупреждаю: сохранить все данные нужно исключительно латиницей, даже в путях к файлам не должно быть никакой кириллицы! Это связано с проблемами написания программ на языке python - разработчики не уделяли должным образом внимания к нелатинским символам.

Устанавливаем обе версии на локальный компьютер. Установка стандартная.
После увидим на рабочем столе 2 папки QGIS разных версий.

Начнем работать с QGIS 2.18. Задача такова: есть спутниковый снимок с городами Велиж и Демидов 1970 года, "весит" 514Мб. Необходимо наложить его отдельным слоем поверх современных спутниковых снимков, да так, чтобы всё совпало - дороги и дома!
В моем примере исходный снимок: файл velizh-demidov.tif.

Запускаем QGIS Desktop 2.18.19 with GRASS 7.4.0

Наше рабочее место выглядит так:

Изначально в программе отсутствует нужный нам функционал OpenLayers (должен быть в меню Интернет). Установим модуль, для этого перейдем Модули -> Управление модулями.

Далее в поиске наберем "openlayers", выберем из списка нужный нам плагин и устанавливаем его.
Закрываем окно "Модули".

Добавим к нашему проекту слой OpenStreetMap (Интернет -> OpenLayer`s plugin -> OpenStreetMap - OpenStreetMap):

Получаем:
С помощью мышки и колеса прокрутки находим нужный участок карты. В моем случае - город Велиж Смоленской области.

Добавим еще один слой карты со спутниковыми снимками Bing (Интернет -> OpenLayer`s plugin -> Bing Maps -> Bing Aerial). Если хотите, можете вместо него Google. Должен сразу предупредить: между спутниковыми снимками разных организаций имеются незначительные расхождения, поэтому для более точного позиционирования слоя с моим снимком будем работать только с одной спутниковой картой.
Итог:
Обращаем внимание на Панель слоёв (в нижнем левом углу программы). Видим два слоя, слой Bing Aerial находится над слоём OpenStreetMap. Можно перемещать слои, можно отключить/включить.

Теперь будем добавлять свой снимок (назовем: растровое изображение) и привязывать его к карте. По умолчанию возможность привязки растра отключена. Чтобы включить, перейдем к Модули -> Управление модулями. В поиске наберем: "gdal". Должен быть такой результат:
Отмечаем крестиком квадрат напротив "Привязка растров GDAL)". Нажимаем "Закрыть".

Наше рабочее место готово к началу работы. Напоминаю: как имя файла, так и путь к файлу должны быть строго в латинице! Также снимки должны быть заранее обработаны, если что-то надо обрезать или подкорректировать.

Начинаем добавление снимка поверх карты Bing: Растр ->Привязка растров ->Привязка растров.

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

Выбираем нужный файл и открываем.
Далее спросит про систему координат.

Если вы не специалист в вопросах координат, ничего не меняем, сразу нажимаем на кнопку ОК.
Получится такая картина:

Теперь активируем прокрутку (кнопка в виде руки).

Переходим к нужным точкам нашего снимка, которые имеют что-то общее с снимком Bing. Это будут т.н. опорные точки. Как минимум, 4 опорные точки в разных местах расставляем. Для начала расположим окна нашей программы поудобнее, чтобы найти общие места под опорные точки.

Нажимаем на кнопку "Добавить точку".

И расставляем. Сначала нажмем на точку своего снимка. Появится окно "Введите координаты карты". Нажимаем на кнопку "С карты".

Окно "Привязка растров" будет свернуто. Нажимаем на точку на карте Bing, соответствующую выбранной точке на нашем снимке. Получаем координаты для точки, отмеченной на нашем снимке. Нажимаем ОК.

Теперь видим по точке на обеих картах!

Добавим еще несколько опорных точек.
Сохраним добавленные точки. Для этого в окне "Привязка растров" нажимаем Файл -> Сохранить контрольные точки как. По умолчанию предложит в ту же директорию и с именем файла на основе имени файла снимка. Настоятельно рекомендую ничего не менять! В будущем, если вы будете добавлять привязку растров тем же снимком, опорные точки будут автоматически загружены!
Теперь перед запуском настроим параметры трансформации (кнопка с шестеренкой).

Тип трансформации ставим "Проективная". Как показывает моя практика, лучше всего трансформирует "Полиномиальная 3", но она требует, как минимум, 10 опорных точек.
Целевой растр - нажимаем на кнопку напротив, предложит свой вариант именования, соглашаемся с таким вариантом, нажав Сохранить. Пример моих настроек:

Нажимаем ОК, и запускаем, нажав на кнопку "Начать привязку растра".

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

Можно скрыть верхний слой с нашим снимком в панели слоёв (слева в нижней части программы), чтобы сравнить полученные результаты. У меня получились точки-в-точки!
Но! Если максимально отдалить снимок, то по краям можно заметить нестыковки с данными карты Bing.

Для решения данной проблемы, необходимо добавить дополнительные опорные точки по всему периметру снимка. И желательно не только по периметру, но и внутри. Чем больше - тем точнее. И не забудьте переключить тип трансформации на Полиномиальная 3!

Пример моей окончательной работы после размещения 56 опорных точек:

Спасибо за внимание! Надеюсь, моя статья будет полезна новичкам.

Как опубликовать такой снимок в интернете, причем не тупо одним снимком целиком, а, как и полагается достойным картографическим сервисам, с пирамидой слоёв и разбивкой целой картинки на множество квадратиков - в следующей статье!


Комментарии

Популярные сообщения из этого блога

Работаем с QGIS. Превращение растрового изображения в пирамиду слоев с разбивкой на отдельные тайлы.

Установка AltLinux 8.0 (BaseALT)