Глава 3. Создание карты плотности населения с использованием внешней базы данных
- О чём эта глава
- Финальная глава РГР: подключение глобального WMS-сервиса NASA GIBS, работа с растром плотности населения GPW — обрезка по границе региона и векторизация, кластеризация районов SQL-запросом с NTILE и сравнение двух независимых картин расселения на дополненном макете.
- Пререквизиты
- Глава 1 (база региона с данными Росстата, макет) и глава 2 (оконные функции). Протоколы OGC — вопросы к зачёту № 28–30.
- Формат сдачи
- Отчёт — продолжение того же файла (doc, docx или pdf).
1. Методические указания (как делать)
- Добавьте NASA GIBS WMS:
- откройте меню Слой → Добавить слой → Добавить слой WMS/WMTS;
- в открывшемся окне нажмите кнопку «Создать»;
- вбейте любое удобное для вас название в поле «Название»;
- URL-адрес:
https://gibs.earthdata.nasa.gov/wms/epsg4326/best/wms.cgi; - нажмите «ОК»;
- нажмите «Подключиться».
Если всё сделано верно, вы увидите список слоёв:
- Найдите и добавьте слой из группы Population Density:
- не забудьте перед добавлением поменять формат на TIFF;
- слой — GPW_Population_Density_2020.
- Откройте векторный слой границ региона (проект с плотностью населения) и соотнесите со слоем GPW_Population_Density_2020: совпадает ли распределение?
- Сохраните файлы локально:
- временно по очереди убирайте видимость всех слоёв, кроме GPW_Population_Density_2020, для экспорта;
- Проект → Импорт/экспорт → Экспорт изображения;
- разрешение — не менее 200 dpi.
- Откройте полученные растры и обрежьте их по векторному слою:
- Растр → Извлечение → Обрезать растр по маске;
- исходный слой — ваш растровый слой; слой маски — векторный слой региона.
- После обрезания растра получится следующая картинка (пример на Нижегородскую область):
- Векторизуйте полученный слой: Растр → Преобразование → Создание полигонов (растр в вектор).
- Измените стиль отображения: символизация по диапазонам значений; режим — Равное количество (квантиль); классов — 10.
- Для вашего слоя с данными Росстата и векторными границами выполните следующий запрос:
WITH "clusters" AS ( SELECT "id", "geom", "Nizhnie_Novgorod_All", NTILE(4) OVER (ORDER BY "Nizhnie_Novgorod_All") AS "cluster_id" FROM "Lebedev_Nizn" ) SELECT "cluster_id", COUNT(*) AS "num_regions", SUM("Nizhnie_Novgorod_All") AS "total_population", ST_Union("geom") AS "cluster_geom" FROM "clusters" GROUP BY "cluster_id" ORDER BY "cluster_id";
Число кластеров в примере — 4 (NTILE(4)); вам нужно
подобрать своё количество.
- Для созданного слоя запроса сделайте оформление по
total_population; настройки — из пункта 8.
- Возьмите макет из главы 1 и дополните его результатом векторизации. Укажите в подписях, какие данные легли в основу.
2. Демонстрация: как NTILE делит данные на корзины
Оконная функция NTILE(k) сортирует строки по указанному выражению
и раздаёт им номера корзин от 1 до k так, чтобы в корзинах оказалось поровну строк
(лишние достаются первым корзинам). Это простейшая кластеризация «по рангу»: она делит
районы на группы по населению независимо от того, насколько велики разрывы между
значениями. Подвигайте ползунок k и посмотрите, как перераспределяются те же 16 районов
(числа иллюстративные, тыс. человек).
Заливка кодирует номер корзины cluster_id. Обратите внимание: NTILE выравнивает количество строк в корзинах, а не суммы населения — поэтому в отчёте нужно оценивать, осмысленны ли получившиеся кластеры, и подбирать k.
3. Состав отчёта
- Дать описание WMS/WMTS-слоёв в QGIS (что это). Оформить как источник.
- Дать описание NASA GIBS WMS API. Оформить как источник.
- Дать комментарий, какие данные были вами получены. Оформить как источник.
- Показать обрезанный растр. Дать комментарий, насколько плотность населения совпадает или не совпадает с векторными границами.
- Показать результат векторизации. Дать комментарий, какие районы вашего региона слились по результатам векторизации.
- Описать процедуру кластеризации векторных границ при помощи SQL-запроса. Дать комментарий, что такое NTILE и как он участвует в процессе кластеризации (k-means). Оформить как источник.
- Показать варианты при разном количестве кластеров. Указать, на каком варианте остановились.
- Привести дополненный макет. Произвести сравнение.
Контрольные вопросы
-
WMS (Web Map Service) — стандарт OGC для получения карт по сети: сервер по запросу отдаёт готовое изображение указанного охвата и слоя. Данные не хранятся локально — нужен стабильный интернет; для дальнейшей обработки слой экспортируется в TIFF.
-
Растр → Извлечение → Обрезать растр по маске: исходный слой — растр плотности населения, слой маски — векторный полигон границ региона. Обе выборки должны быть в согласованных системах координат.
-
Векторизация превращает связные области растра с одинаковым значением в полигоны. Соседние районы с близкой (после квантования) плотностью попадают в одну область и сливаются в один полигон — деталь, которую требуется прокомментировать в отчёте.
-
NTILE(k) сортирует строки по показателю и раздаёт номера корзин 1…k с равным числом строк в каждой — кластеризация по рангу одного признака. K-means минимизирует расстояния объектов до центров кластеров, учитывает величину разрывов между значениями и работает с несколькими признаками; NTILE проще, но границы корзин могут разрезать близкие значения.
-
После присвоения районам номеров корзин NTILE строки группируются по cluster_id, и ST_Union сливает геометрии районов каждой корзины в одну мультигеометрию — получается слой кластеров, который можно оформить по total_population.
-
Запрос NTILE группирует по абсолютному населению районов — группировка происходит вокруг административного центра (в примере — Нижнего Новгорода). Векторизация растра плотности, напротив, объединяет малонаселённые территории со сходной плотностью. Это две разные меры расселения: сумма по административной единице и локальная плотность на клетку растра.
Источники
- NASA Global Imagery Browse Services (GIBS) : [сайт]. — URL: https://www.earthdata.nasa.gov/engage/open-data-services-software/earthdata-developer-portal/gibs-api (дата обращения: 18.08.2026).
- Gridded Population of the World (GPW), v4 — SEDAC : [сайт]. — URL: https://sedac.ciesin.columbia.edu/data/collection/gpw-v4 (дата обращения: 18.08.2026).
- PostgreSQL 15 Documentation. Window Functions (NTILE) : [сайт]. — URL: https://www.postgresql.org/docs/15/functions-window.html (дата обращения: 18.08.2026).
- OGC Web Map Service (WMS) Standard : [сайт]. — URL: https://www.ogc.org/standards/wms (дата обращения: 18.08.2026).