Дизайн карт "Властелина Колец " в QGIS (и немного ГИС-анализа)

Дизайн карт "Властелина Колец " в QGIS (и немного ГИС-анализа)

Alex Boro


«Ваши тропы – у вас под ногами. Каждый увидит свою в должное время» Галадриэль

За что мы любим фантастические Вселенные? Летописи мироздания. Сложные связи между родословными главных героев. Взаимоотношения рас. Но главное, что нас завлекает - это сложная проработанность лора (lore). И ключевую роль здесь играет картография.

«Властелин колец» — это особый пример. Джон Рональд Руэл Толкин потратил много сил и времени на разработку детальных карт Средиземья. Мы уже рассматривали само содержание материалов, однако главное здесь – это узнаваемый дизайн и каллиграфия.

Я очень давно хотел сделать карту какой-нибудь реальной территории в стиле географических материалов к легендариуму «Властелин Колец», используя при этом доступные инструменты и открытые данные. Получилась вот такая карта Москвы:


Ниже - небольшой алгоритм того, как это всё строилось - буду рад, если вы возьмете эту методику на вооружение, и еще сильнее обрадуюсь, если предложите улучшение:)

***

Краткий набор инструментов:

  • Софт: QuantumGIS
  • Векторые данные: границы, дороги, водные объекты, города – OpenStreetMap
  • Растровые данные: лесопокрытая площадь от проекта GlobalForestWatch, цифровая модель рельефа SRTM
  • Значки лесов и гор в стиле карт «Властелин Колец» - тут
  • Шрифт: Aniron

***

Ключевая особенность этой карты заключается в том, что я попытался совместить базовые подходы ГИС-аналитики (регулярные сети, зональная статистика) и красивую стилизацию.

Шаг 1. Работа с рельефом.

Как можно заметить, на итоговой карте «высоты» расположены на определенных участках Москвы. Фактически, они показывают самые высокие точки в рамках общего контура территории. Для того, чтобы выделить эти ключевые возвышенности, я использовал данные SRTM с ресурса EarthExplorer. Эти данные очень полезны для анализа рельефа, так как каждый пиксель содержит в себе значение высоты.

Цифровая модель рельефа, обрезанная по границе г. Москва

После цветовой классификации цифровой модели рельефа я построил регулярную сеть из гексагонов с шагом в 1500 м – это позволит генерализировать данные и выделить наиболее возвышенные участки. Расстояние я выбрал, опираясь на общую площадь региона, если у вас будет бОльшая по площади территория, шаг можно увеличить (либо уменьшить - если участок маленький).

Регулярная гексагональная сеть с шагом в 1500 м

Получаем набор ячеек. Теперь перед нами стоит задача той самой генерализации данных. Используя инструмент "Зональная статистика", я просчитал среднее значение высоты для каждого гексагона. Иными словами, QGIS посчитал все пиксели, входящие в отдельный гексагон и вывел среднее значение. Таким образом мы можем оставить в проекте только те ячейки, которые имеют максимальный диапазон (от 225 до 263 метров).

Генерализованная гексагональная сеть рельефа

Последний этап в данном шаге - построение центроидов ячеек с максимальными значениями и стилизация этих точек иконкой гор.

Максимальные высоты

Шаг 2. Работа с лесными участками

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

Данные лесопокрытой территории

В отличие от цифровой модели рельефа, где каждый пиксель содержал в атрибутах значение высоты, здесь другая метрика - процент лесистости на точку. Для упрощения визуализации и дальнейшей фильтрации данных воспользуемся также регулярной сеткой. Однако сейчас шаг сетки - 500 метров, так как пространственное разрешение исходных данных более высокое.

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

Отфильтрованные ячейки лесистости

Теперь нам необходимо визуализировать эти ячейки в привычной "Толкиеновской" стилизации. Лично я немного усложнил подход: для начала при помощи функции rand() добавил в таблицу атрибута случайные значения в диапазоне от 1 до 2. В дальнейшем я буду их использовать для того, чтобы задать размер значка и мои точки будут смотреться более интересно.

В качестве стиля я остановился на центроидах ячеек и добавил отображение в виде "кружочка" деревьев

Стилизованные лесные массивы

В итоге, у нас получилась первичная визуализация возвышенностей и лесных участков

Готовые леса и горы

Шаг 3. Данные OpenStreetMap

Как я писал вначале, для водных объектов, дорог и геотегов можно использовать векторные данные OSM. Единственное, что я перерисовал - это дороги. Они были слишком "прямые" для итоговой визуализации, поэтому я оцифровал ключевые магистрали вручную. Добавил водные объекты, точки городов с подписями (используя шрифт Aniron)

Данные OSM

Шаг 4. Формирование итогового стека слоев

Собираем всё вместе. Как вы заметили, я подобрал довольно холодные неяркие цвета для каждого из объектов, но в целом, выбор цвета - дело вкуса)

Собранный проект

Шаг 5. Настройка итогового макета

Здесь нет ограничений по структурным компонентам финальной карты - лично я добавил классические стрелку севера, масштаб, подпись и легенду

Итоговый макет

Что ж, можно экспортировать)

 

Report Page