Найти в Дзене
DIGGeo

Как создать кольцевую карту в QGIS

Оглавление

Кольцевые карты знамениты тем, что они, во-первых, эстетичны; во-вторых, информативны, поскольку способны отображать качество или количество, изменяемое во времени. Это мощный инструмент инфографики в картографии.

Скачать файл плагина, позволяющего создавать кольцевые карты, можно с этого сайта.

Скачиваем архив.
Скачиваем архив.

Архив распакован, папка открыта. Нас интересует файл, размещенный в папке scripts. В папке, как правило, содержится несколько файлов-плагинов. В нашем случае нужен только CreateRingMaps.py. Данный файл помещаем в папку, путь к которой узнаем следующим образом: на панели инструментов анализа нажимаем кнопку «Параметры», в открывшемся окне раскрываем вкладку «Скрипты», копируем путь и по этому пути отправляем файл-плагин. При этом пока идет перемещение файла, не закрываем окно параметров, откуда был взят путь. Файл перемещен, жмем «Ok» в окне параметров и закрываем. Через некоторое время в панели инструментов анализа во вкладке «Скрипты» появится Create Ring Maps.

Красным кругом выделена кнопка «Параметры» на панели инструментов анализа.
Красным кругом выделена кнопка «Параметры» на панели инструментов анализа.

К слову, в скачанном архиве много других интересных плагинов, назначение которых описано на сайте-источнике.

Следующий шаг – создание самой кольцевой карты. Для ее корректного отображения все слои должны быть в одной проекции. Иначе кольцевая карта будет менять форму и превращаться в яйцевую, или же вообще перестанет отображаться.

-4

Пусть имеются данные, которые отражают территорию и годы. 26 территорий в пределах Крымского полуострова и четыре годовых показателя. Соответственно, надо, чтобы получилось 26 «лучей», каждый из которых будет содержать по четыре сегмента-года. Запускаем Create Ring Maps.

-5

Выбираем слой, на основе которого будет создаваться кольцо. Данные в строке Comma Separated Distance показательны, т.е. это пример того, как строку надо заполнить. По сути, в строке надлежит отобразить те четыре годовых показателя-сегмента через запятую: 1, 2, 3, 4. Их соответствие с годами определено очередностью размещения столбцов в таблице атрибутов слева направо. Столбцы как раз расположены последовательно: 2010, 2012, 2018, 2020. Показатель Gap определяет расстояние между «лучами», Rings – векторный слой кольца, Anchors – направляющих. Поля ring_num и ring_val рассмотрим далее.

Результат, заглянем в таблицу атрибутов.
Результат, заглянем в таблицу атрибутов.

Начинается самое интересное. Теперь на каждую территорию приходится четыре строки. Четыре Керчи, четыре Алушты, четыре Бахчисарайских района и т.д. Четыре потому, что четыре годовых показателя. Поэтому общее количество строк составляет в итоге 104. Появились также поля ring_num, где от 1 до 4 показаны сегменты каждого луча-территории, и ring_val, которое должно было бы содержать в себе показатели каждой территории в указанный год. Но в таблице атрибутов показатель на каждый год выведен в отдельный столбец, что никак не подходит для корректного отображения в кольце. Данные по всем годам должны быть в столбце ring_val и соответствовать показателю ring_num. Это логично, ведь каждый сегмент – это отдельный объект на карте, который выведен в отдельную строку.

Зная об этом, можно было бы готовить данные заранее в Блокноте или Excel, и, создав кольцо, подвязать атрибутивные данные. Но какая разница, до или после выполнять этот объем работы. Мы взываем к читателям, если кто-то, работающий в этой сфере, знает, какое выражение использовать в калькуляторе полей QGIS для перевода данных из строк в столбец с заданным условием, поделитесь, пожалуйста, информацией.

Результат переработки таблицы в Excel под кольцевую карту.
Результат переработки таблицы в Excel под кольцевую карту.

Экспортировав таблицу атрибутов, мы переработали ее в Excel и сохранили в формате CSV (разделители-запятые). Теперь добавляем переработанную таблицу в проект. «Слой – Добавить слой – Добавить слой из текста с разделителями».

В данном случае кодировка UTF-8 не подошла, меняем на Windows-1251.
В данном случае кодировка UTF-8 не подошла, меняем на Windows-1251.
-9

Выбираем «Другие разделители – Точка с запятой». В Geometry Definition отмечаем «Только атрибуты». После этого появится возможность добавить слой.

Следующая задача – связать слои. Открываем свойства кольцевого слоя, заходим во вкладку «Связи», добавляем связь.

-10
  • Связанный слой – табличный слой.
  • Поле для объединения и целевое поле – это те поля, которые являются общими в кольцевом и табличном слоях; за счет них сохраняется соответствие в строках.
  • Объединенные поля – галочкой отмечаем те поля, которые надлежит перенести в кольцевой слой из табличного.
  • Custom Field Name Prefix – префикс, который выделит столбцы, добавленные из табличного слоя; устанавливаем T_.
-11

В атрибутах кольцевого слоя добавились T_ring_num и T_ring_val. Для дальнейшей работы понадобятся эти два столбца, fid и name. Остальные можно удалять.

Начинаем работу со стилями.

Выбираем градуированный знак и поле, на основе которого будет произведена классификация, – T_ring_val.
Выбираем градуированный знак и поле, на основе которого будет произведена классификация, – T_ring_val.
-13

Что важно учитывать

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

Минимальное количество косуль почти совпадает с максимальным количеством лисиц.
Минимальное количество косуль почти совпадает с максимальным количеством лисиц.

Решить эту проблему можно следующим образом. Имеется 26 территорий. Поэтому создаем еще 25 копий кольцевого слоя. Каждый слой прогоняем через фильтр «Свойства – фильтр – name = ‘Симферополь’», меняем только название территории. Далее в свойствах стиля обновляем классификацию каждого слоя, и классификация адаптируется только под имеющиеся показатели конкретной территории-луча.

Применение вне ГИС

Кольцевая карта только в геоинформационных системах является картой в прямом смысле слова. Карта – потому, что, будучи векторным слоем, привязана к территории. С таким же успехом можно создать кольцевую карту на основе негеографических показателей. Пространственная привязка теряет значение, потому что в качестве фона используется негеографический объект.

Сейчас сложно вспомнить, но не исключено, что данная схема, отражающая активность Солнца, привязана к глубинке Зимбабве.
Сейчас сложно вспомнить, но не исключено, что данная схема, отражающая активность Солнца, привязана к глубинке Зимбабве.

Читайте нас в Telegram и ВКонтакте