Создаём интерактивную карту родного села в программе QGIS
Часть вторая: работа с растровыми подложками
Введение
В этой заметке мы узнаем, как создать интерактивную карту с динамическими подложками: она позволит нам увидеть, как менялось село с течением времени. В качестве подложки можно использовать любое растровое изображение, будь то план генерального межевания, архивная аэрофотосъёмка, спутниковые снимки и так далее.
Начало работы. Поиск исторических снимков в Google Earth
Работу мы начинаем, имея созданный в QGIS проект с загруженной в него базовой картой и данными цифрового рельефа местности (как это сделать, читайте в предыдущей части). Теперь добавим к проекту один из архивных снимков Google Earth. Ведь как мы знаем, Google хранит не только современные спутниковые снимки, но и архивные данные за последние несколько десятилетий. Так например, для Елфимова в хорошем качестве доступны снимки начиная с 2013 года. Имеется съёмка, датированная 1985 годом, но её качество нас не устраивает.
Об основах работы с Google Earth Pro и о том, как с её помощью просматривать архивные космоснимки, можно прочитать в статье по ссылке.
В качестве дополнительной подложки для своей карты я выбрал съёмку, датированную февралём 2018 год, и вот почему. Поскольку базовая карта в QGIS у меня "летняя", то зимние кадры из Google Earth будут смотреться по отношению к ней очень контрастно. А малая разница в датировке (и, соответственно, в качестве съёмки) позволит рассмотреть село и в летний, и в зимний сезон. Удобно.
Вот как выглядит нужный мне снимок в Google Earth Pro. Обратите внимание на верхнюю часть картинки: здесь хорошо виден ползунок, передвигая который, можно переключаться от одного года к другому.
Архивная спутниковая съёмка села Елфимова, февраль 2018 года, Google Earth
Сохраняем изображение
В главном окне Google Earth Pro найдём кнопку "Сохранить изображение" (она довольно мелкая, на картинке внизу она выделена). Нажмём на эту кнопку. После этого под ней появятся дополнительные меню "Параметры карты", "Разрешение" и "Сохранить изображение".
Поскольку нам нужна только картинка, в "Параметрах карты" мы уберём с изображения всё лишнее: названия, компас и т.п. Разрешение кадра выставляем такое, которое обеспечит оптимальное соотношение размера изображения и его качества. Это можно выяснить опытным путём (я установил 8K и остался доволен). После того, как все настройки выполнены, нажимаем "Сохранить" и указываем нужную папку.
Теперь закрываем Google Earth и возвращаемся в QGIS.
Подготовка к геопривязке. Установка модуля Freehand Georeferencer
Геопривязку в QGIS можно выполнять по-разному. Я для этих целей использую плагин Freehand Georeferencer. Установить его достаточно просто: в верхнем меню выбираем "Модули" - > "Управление модулями":
В открывшемся окне вводим "Freehand Georeferencer", вот он:
И нажимаем "Установить". В главном меню QGIS появится соответствующий значок:
Выполняем геопривязку изображения
Теперь переходим к геопривязке сохраненного ранее изображения. В верхнем меню QGIS выберем "Слой" - > "Геопривязка":
В открывшемся окне кликнем по иконке "Открыть растр":
Находим наш спутниковый снимок и выбираем его. Он появится в окне геопривязки. Наша следующая задача: сопоставить этот снимок с базовой картой с помощью контрольных точек. Программа должна понять, какие точки на снимке-подложке соответствуют точкам на базовой карте. Для этого нажмём на иконку "Добавить контрольную точку", она находится здесь:
Последовательно указывайте точки на подложке и на базовой карте. Минимум нужно три, но вообще чем больше точек - тем лучше. Используйте характерные ориентиры: крупные строения, перекрестки дорог, пруды, русла рек и так далее.
После того, как закончили с точками, нажимаем на кнопку "Начать геопривязку", затем нажимаем "ОК" и дожидаемся, пока программа закончит обработку. Новая подложка появится в окне "Слои":
Может так получиться, что привязка выполнится не идеально. Качество привязки можно проверить, настроив прозрачность слоёв: дважды кликнем по нужному слою (либо щёлкнем по нему правой кнопкой мыши и выберем "Свойства"), затем в разделе меню "Прозрачность" выставим нужное значение. Порядок слоёв можно поменять, перетаскивая их мышкой.
Как видим, карта привязалась не очень хорошо. Необходима коррекция:
Корректируем геопривязку
Нажимаем на иконку модуля "Freehand Georeferencer" в главном окне QGIS. В появившемся справа меню в поле "Transform" выберем "Affine (move/rotate/scale/shear)". Убедимся, что в поле "Target Layer" выбран тот слой, что нужно отредактировать, а затем нажимаем "Start":
Кликнем по карте, добавив на неё несколько точек. Перемещая их, карту можно будет масштабировать, смещать, вращать и т.п.: добиваемся приемлемого соответствия базовой карты и подложки. После того, как задача выполнена, нажимаем "Apply":
В разделе "Слои" появится новый, отредактированный слой с уточнённой геопривязкой. Старый (с ошибками, требующий коррекции) также никуда не денется, но он нам больше не нужен. Его можно удалить.
Аналогичным образом в QGIS можно добавить столько растровых подложек, сколько требуется. Каждая будет находиться на своём слое.
Я добавил в модель четыре дополнительные подложки со съёмкой села 2018, 1984 и 1974 годов (см. на картинке внизу). Слой 2025 (лето) - это базовая карта, слой 2025 (Лето)_GeoTiFF - базовый слой рельефа (цифровая модель, ЦМР). Итого у нас в проекте шесть слоёв.
Одно "НО"
Для реализации переключаемых подложек одной цифровой модели рельефа (ЦМР) нам недостаточно. Ведь если мы запустим QGIS2Threejs, то на трехмерной карте увидим лишь наш исходный, базовый слой. Добавленных подложек здесь не будет.
Это связано с тем, что каждой подложке должен соответствовать свой ЦРМ. То есть нам нужно для каждой подложки добавить файл ЦРМ ещё раз. Находим GeoTiFF, который мы подгружали в проект в самом начале и перетаскиваем его в окно "Layers" QGIS ещё раз. Количество файлов ЦМР в окне должно совпадать с количеством файлов подложек. У меня получилось вот так (обратите внимание на новые появившиеся слои в левом нижнем углу). Для удобства слои я переименовал.
Теперь если мы запустим QGIS2threejs ещё раз, то увидим уже другую картину. Обратите внимание: во вкладке DEM появились новые слои. Но к ним ещё не привязаны растры: это мы сделаем на следующем шаге.
Соотнесение ЦМР и растровых подложек
Важно соотнести ЦМР с каждым растром, чтобы в экспортированной карте они оторажались в нужном порядке. Чтобы это сделать, щёлкнем правой кнопкой мыши по нужному слою, в выпадающем меню выберем "Свойства" (Properties):
В открывшемся окне свойств перейдём во вкладку "Materials", здесь нажмём на зелёный плюсик и выберем "Select Layers":
В открывшемся окне ставим галочку напротив того слоя, который хотим отобразить. После выбора нажимаем "Применить" - "Ок". Не забываем установить галочку видимости слоя в окне "Layers" QGIS2threejs.
Слои можно переименовать, зайдя во вкладку "Others" в свойствах слоя:
Готово. Аналогично привязываем оставшиеся слои. Не забываем установить здесь же галочку "Build Sides" и выставить высоту вертикальной стены обрыва на границе карты (у меня стоит единичка).
Экспорт карты
Он выполняется так же, как и в предыдущей части: здесь ничего нового. Единственный важный момент: на экспортированной карте смена подложек происходит через "меню-гармошку" в левом верхнем углу:
Если все галочки включены - все добавленные растры отображаются одновременно. Здесь особенность такая, что более нижний слой в списке перекрывает более верхний. Так или иначе, снимая или устанавливая галочки, можно отобразить нужный слой / произвести сравнение слоёв, и так далее. После экспорта данные можно загрузить на GitHub и опубликовать на своём сайте.
Ну а в следующей части мы посмотрим, как добавить в проект трёхмерные модели.