Дизайн карт "Властелина Колец " в QGIS (и немного ГИС-анализа)
Alex Boro«Ваши тропы – у вас под ногами. Каждый увидит свою в должное время» Галадриэль
За что мы любим фантастические Вселенные? Летописи мироздания. Сложные связи между родословными главных героев. Взаимоотношения рас. Но главное, что нас завлекает - это сложная проработанность лора (lore). И ключевую роль здесь играет картография.
«Властелин колец» — это особый пример. Джон Рональд Руэл Толкин потратил много сил и времени на разработку детальных карт Средиземья. Мы уже рассматривали само содержание материалов, однако главное здесь – это узнаваемый дизайн и каллиграфия.
Я очень давно хотел сделать карту какой-нибудь реальной территории в стиле географических материалов к легендариуму «Властелин Колец», используя при этом доступные инструменты и открытые данные. Получилась вот такая карта Москвы:
Ниже - небольшой алгоритм того, как это всё строилось - буду рад, если вы возьмете эту методику на вооружение, и еще сильнее обрадуюсь, если предложите улучшение:)
***
Краткий набор инструментов:
- Софт: QuantumGIS
- Векторые данные: границы, дороги, водные объекты, города – OpenStreetMap
- Растровые данные: лесопокрытая площадь от проекта GlobalForestWatch, цифровая модель рельефа SRTM
- Значки лесов и гор в стиле карт «Властелин Колец» - тут
- Шрифт: Aniron
***
Ключевая особенность этой карты заключается в том, что я попытался совместить базовые подходы ГИС-аналитики (регулярные сети, зональная статистика) и красивую стилизацию.
Шаг 1. Работа с рельефом.
Как можно заметить, на итоговой карте «высоты» расположены на определенных участках Москвы. Фактически, они показывают самые высокие точки в рамках общего контура территории. Для того, чтобы выделить эти ключевые возвышенности, я использовал данные SRTM с ресурса EarthExplorer. Эти данные очень полезны для анализа рельефа, так как каждый пиксель содержит в себе значение высоты.
После цветовой классификации цифровой модели рельефа я построил регулярную сеть из гексагонов с шагом в 1500 м – это позволит генерализировать данные и выделить наиболее возвышенные участки. Расстояние я выбрал, опираясь на общую площадь региона, если у вас будет бОльшая по площади территория, шаг можно увеличить (либо уменьшить - если участок маленький).
Получаем набор ячеек. Теперь перед нами стоит задача той самой генерализации данных. Используя инструмент "Зональная статистика", я просчитал среднее значение высоты для каждого гексагона. Иными словами, QGIS посчитал все пиксели, входящие в отдельный гексагон и вывел среднее значение. Таким образом мы можем оставить в проекте только те ячейки, которые имеют максимальный диапазон (от 225 до 263 метров).
Последний этап в данном шаге - построение центроидов ячеек с максимальными значениями и стилизация этих точек иконкой гор.
Шаг 2. Работа с лесными участками
Тут интереснее. В первую очередь, необходимо определить, насколько много леса будет у нас на карте. В качестве первичной информации я взял данные лесопокрытой территории с хаба GlobalForestWatch.
В отличие от цифровой модели рельефа, где каждый пиксель содержал в атрибутах значение высоты, здесь другая метрика - процент лесистости на точку. Для упрощения визуализации и дальнейшей фильтрации данных воспользуемся также регулярной сеткой. Однако сейчас шаг сетки - 500 метров, так как пространственное разрешение исходных данных более высокое.
Когда сетка построена, можно провести зональную статистику (снова берем средние величины) и с помощью фильтрации убираем все ячейки, где средняя лесистость составляет менее 70%
Теперь нам необходимо визуализировать эти ячейки в привычной "Толкиеновской" стилизации. Лично я немного усложнил подход: для начала при помощи функции rand() добавил в таблицу атрибута случайные значения в диапазоне от 1 до 2. В дальнейшем я буду их использовать для того, чтобы задать размер значка и мои точки будут смотреться более интересно.
В качестве стиля я остановился на центроидах ячеек и добавил отображение в виде "кружочка" деревьев
В итоге, у нас получилась первичная визуализация возвышенностей и лесных участков
Шаг 3. Данные OpenStreetMap
Как я писал вначале, для водных объектов, дорог и геотегов можно использовать векторные данные OSM. Единственное, что я перерисовал - это дороги. Они были слишком "прямые" для итоговой визуализации, поэтому я оцифровал ключевые магистрали вручную. Добавил водные объекты, точки городов с подписями (используя шрифт Aniron)
Шаг 4. Формирование итогового стека слоев
Собираем всё вместе. Как вы заметили, я подобрал довольно холодные неяркие цвета для каждого из объектов, но в целом, выбор цвета - дело вкуса)
Шаг 5. Настройка итогового макета
Здесь нет ограничений по структурным компонентам финальной карты - лично я добавил классические стрелку севера, масштаб, подпись и легенду
Что ж, можно экспортировать)