May 9, 2024

Как посчитать пространственную статистику? Рассуждения на пирогах

Дано: у вас есть слой с районами города и слой с чем-то еще. В моем случае это слой с полигонами растительности. Это может быть любой площадной / точечный / линейный слой.

Что хочется получить: красивую картинку, на которой показано, сколько по каждому району растительности.

В чем вообще логика таких пространственных вычислений?

Предположим, у вас есть город, а в нем - много остановок общественного транспорта. Образно можно представить это в виде пирога с ягодками сверху.

Поверхность пирога - территория города. Ягодки - остановки.

А еще у пирога есть деление на кусочки (образно - районы). В зависимости от города районы могут быть разного размера, как и куски у пирога.

Предположим, что вам нужно посчитать, сколько ягодок у каждого куска пирога. А потом еще и прикинуть, сколько ягод приходится на каждый квадратный см пирога. Как это считать?

1) Посчитаем, сколько ягодок в каждом пироге. Для этого вам в первую очередь надо разделить пирог, а после уже считать. Для деления пирога используем специальную форму - каркас деления пирога на куски.

2) А теперь после деления пирога на куски можно посчитать ягодки по каждому куску. В реальной жизни мы сделаем это сами. В аналогичном примере в пространственных данных - используем инструмент "count points in polygons" (так он называется в qgis).

В результате вы получите, сколько ягодок на каждом куске пирога вне зависимости от его размера:

3) можно раскрашивать пирог

Раскраска пирога по принципу - у кого больше ягодок.

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

А если надо узнать, сколько ягодок приходится на см2 пирога в зависимости от куска, то кол-во ягод в каждом куске нужно разделить на его площадь в см2:

N = кол-во ягод, S = площадь куска пирога

Тогда мы получим плотность ягод на кусок пирога. Если любите ягоды, то с помощью этой информации вы сможете выбрать наиболее оптимальный для себя кусок - такой, где плотность ягод выше.

плотность ягод в зависимости от куска пирога

И вот, что получится:

Когда разобрались в целом с механикой, попробуем на примерах.

Вариант 1. Быстрый.

Идеален если у вас точечный файл.

Используем инструмент подсчета точек в полигоне.

полигоны - то, как "нарезан пирог". а точки - ягодки на пироге.

Вариант 2. Если вы хотите посчитать площадные характеристики.

Дано: районы города и полигоны с промышленными зонами города

Но что делать, если какая-то зона находится на стыке районов? Получается, что сначала надо поделить промзоны с помощью "каркаса пирога" - полигонов районов.

1) Режем промзоны по районам с помощью инструмента пересечения

2) В новом слое с промзонами для каждого полигона считаем площадь

3) По районам считаем сумму площадей всех промзон, которые входят в этот район

4) в итоге все можно раскрасить по получившемуся показателю и оформить:

Вариант 3. Если вы хотите посчитать площадные характеристики, но и не только.

Дано: районы города и зоны растительности. У каждой зоны есть свое значение NDVI, нам нужно посчитать высшее среднее значение ndvi по району. Получается, что тут надо и по районам порезать, и учесть площадь, и сами значения.

Город, в нем районы. Также есть покрытие полигонами по городу с разным значением NDVI (индекса растительности). Нам надо определить, в каком районе наибольшее значение NDVI.

Интерпретация на примере пирогов: у вас на пироге есть пятна разного цвета. у каждого пятна своя интенсивность. вам нужно посчитать, на каком куске пирога интенсивность цвета будет больше всего. при этом учитываем, что размеры кусков - разные, а пятна могут быть на нескольких кусках сразу.

пирог с разноцветными пятнами. Числа обозначают интенсивность красителя в каждом пятне.

Что будем делать:

1) Режем растительность по районам с помощью инструмента пересечения

Буквально - режем пятна пирога по кускам.

2) Как и в прошлый раз, присоединяем к каждому району суммарную информацию о площади кусков растительности, но также и об ndvi.

Каждому куску пирога присоединяем информацию о том, какая в нем суммарная площадь пятен и сумма процента красителя.

3) Cчитаем площадь каждого района (куска пирога) с помощью стандартной функции: $area/1000000 (делим на миллион, чтобы получить км2)

4) Узнаем среднее значение NDVI в пределах каждого района (сумму NDVI по району делим на кол-во кусков растительности); После, чтобы учесть не просто среднее значение ндви, но и учесть, сколько процентов растительность занимает в каждом районе, нужно все это умножить на долю покрытия растительностью в районе (сумма площадей кусков растительности по району / площадь района).

Пироговая аналогия: сумму значения красителей делим на площадь пятен на пироге. Далее полученное значение умножаем на долю пятен на куске. Доля пятен на куске = сумма площадей пятен на куске / площадь куска.

Получившийся результат: