Статьи

Карты-анаморфозы в QGIS

Туториалы ГИС
Время прочтения: 6 минут

Введение

Карты-анаморфозы — необычный способ искажать и без того деформированный от картографических проекций мир с целью более удобного представления информации, привязанной к каким-либо выдуманным человеком территориальным единицам. В этой статье вы узнаете не только, что такое карты-анаморфозы, но и как их делать, и как они помогают нам лучше понять результаты выборов.
Пример карты-анаморфозы, построенной на основе численности населения Южной Кореи, которую вы сможете сделать, прочитав статью до конца

Что такое карта-анаморфоза

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

Как карты-анаморфозы помогают в картографировании выборов

В 2016 году прошли выборы президента США, где в борьбе за место в овальном кабинете столкнулись Хиллари Клинтон (представитель демократической партии) и Дональд Трамп (представитель партии республиканцев). По итогу выборов победил звезда фильма "Один дома", и вот как это выглядело на карте:
(Источник — https://www.youtube.com/watch?v=pySHMxf_Qvk&t=638s)
Вся карта в красных цветах республиканской партии, выглядит как убедительная победа мистера Трампа, но есть во всей этой ситуации один нюанс, который совсем не виден на этой карте. Хиллари Клинтон набрала больше голосов, чем Дональд Трамп, почти 66 миллионов против почти 63 соответственно. Разница в 3 миллиона человек, почти 2 Екатеринбурга.
Проблема этой карты в том, что хоть она и с помощью градации цвета показывает, насколько больше проголосовало за определенный результат, карта все равно показывает в первую очередь территорию, а не статистику, примененную к территории. И вот тут для более честного изображения информации приходит наша супергероиня — Карта-анаморфоза.
Хиллари Клинтон выиграла выборы в штатах и округах, где плотность населения больше, и если увеличить территории пропорционально числу голосовавших, то победа Трампа уже кажется не столь однозначной (Источник - https://www.viewsoftheworld.net/wp-content/uploads/2016/11/USelection2016Cartogram.png)
Карты-анаморфозы приходят на помощь и отлично работают, когда нам важна в первую очередь статистика о территории, а во вторую очередь соседство. Теперь, когда мы немного разобрались с теорией, приступим к практике

Практика

Для того, чтобы строить карты-анаморфозы в QGIS, нам потребуется модуль Cartogram3 и полигональный слой с каким-либо показателем, в нашем случае для примера я взял слой с административными границами Южной Кореи с агрегированными данными по численности населения от Kontur. Для удобства готовый исходный слой можете скачать по ссылке. Модуль Cartogram3 легко находится в поиске плагинов через вкладку модулей программы.
В правом верхнем углу я выделил логотип модуля. После его остановки аналогичный значок появится у вас на панели QGIS. После установки модуля ищем значок и нажимаем на него.
Cartogram3 строит карты-анаморфозы как раз по тому же алгоритму, что и карта выборов США. В научных статьях такие карты-анаморфозы называются картограммами, построенными методом искажения резинового листа (Rubber Sheet Distortion Method), иногда слово "искажение" в названии метода убирается.
Есть несколько алгоритмов построения карт таким методом, модуль Cartogram3 использует алгоритм, предложенный Дугеником, Крисманом и Нимейером. (Dougenik, J. A, N. R. Chrisman, and D. R. Niemeyer. 1985. "An algorithm to construct continuous cartograms." Professional Geographer 37:75-81).
Перед тем, как строить анаморфозы, заранее посчитаем плотность населения, чтобы мы могли покрасить нашу территорию в зависимости от плотности. После построения карты-анаморфозы размеры регионов изменятся и плотность населения будет рассчитана некорректно. Посчитать плотность населения человек на квадратный километр можно по формуле, используя калькулятор полей:
 "population" / ($area / 1000000) -- вместо population должно быть 
 название вашей колонке с численностью населения или иного показателя, убедитесь, 
 что единицы измерения в выбранной системе координат проекта - метры
После того, как мы рассчитали плотность населения, смело жмем на значок модуля cartogram3.
В поле "input layer" выбираем интересующий нас слой, в поле "field" — колонку с численностью населения.
Теперь разберемся с пунктами в разделе "Stop conditions". Указанные поля настраивают условия, когда расчет формы наших искаженных территорий заканчивается. И мы для этого указываем два условия: либо количество итераций (max. number of iterations) расчета формы региона по алгоритму, либо достижение максимальной средней ошибки (max. average error) в форме нашей искаженной территории. Чем больше итераций и чем меньше средняя ошибка, тем лучше качество. Создатели модуля рекомендуют ставить не меньше 10 итераций. Обратите внимание, что если вы укажете миллион итераций, но средняя точность будет достигнута раньше, то алгоритм перестанет считать по достижению средней точности.
Для наших целей вполне достаточно стандартных значений, поэтому, выбрав нужный слой и нужное поле, я нажимаю "окей" и запускаю алгоритм.
Условия остановки: поскольку алгоритм является итеративным, результаты постепенно улучшаются с каждым повторением. Чем больше итераций, тем лучше; но также: чем больше итераций, тем дольше время вычислений. Мы рекомендуем минимум 10 итераций. Если требуемое качество достигается раньше, т.е. средняя площадная ошибка картограммы меньше заданного значения, расчет останавливается раньше.
С выбранными настройками получаем вот такой результат, стиль слоя я установил отдельно самостоятельно. Обратите внимание, что алгоритм создает временный слой карты-анаморфозы, поэтому не забудьте его сохранить.
Дополнительная литература по теме, которая может быть вам интересна:
  • Sabrina Nusrat and Stephen Kobourov. The State of the Art in Cartograms - https://www2.cs.arizona.edu/~kobourov/star.pdf
  • Страница модуля Cartogram3 в гитхабе - https://github.com/austromorph/cartogram3
  • Dougenik, J. A, N. R. Chrisman, and D. R. Niemeyer. 1985. "An algorithm to construct continuous cartograms." Professional Geographer 37:75-81
  • Donald H House Christopher J Kocmoud Continuous cartogram construction - https://www.researchgate.net/publication/3788051_Continuous_cartogram_construction
Материал подготовил Александр Зуев