Туториал: считаем плотность застройки по данным ОСМ (и не только)
В этом туториале мы посчитаем FSI (Floor Space Index) и GSI (Ground Space Index). Более подробно о них вы можете узнать из статьи Картетики https://cartetika.ru/tpost/odvx1s2yh1-kak-schitayut-goroda-plotnost-zastroiki
Если кратко, то GSI = площадь следа застройки / площадь квартала(или района), а FSI = Σ(площадь застройки по этажам) / площадь квартала (или района).
Соответственно, GSI просто использует площадь по первому этажу, а FSI - по всем.
Для работы вам необходимы следующие данные из ОСМ:
🔗 polygon buildings - можно скачать с http://download.geofabrik.de/ для больших территорий, или лучше с использованием overpass turbo или же плагина QuickOSM
🔗 адм. деление города - удобно брать тут - https://osm-boundaries.com/Map
Считаем по районам
1) Для того, чтобы считать плотность застройки, нужно иметь этажность для каждого дома. Если внутри атрибутивной таблицы нет информации по этажам для всех зданий, то советую изучить разные источники, космоснимки и т д.
В некоторых случаях можно вместо пустых значений этажности поставить единицу, предполагая, что это частная и/или малоэтажная застройка.
Для того, чтобы в пустые поля этажности проставить единицы, необходимо открыть атрибутивную таблицу слоя со зданиями и зайти в калькулятор полей.
Прописываем следующую команду с условным оператором:

2) Мы будем считать несколько вариантов плотности застройки, и они используют разные площади застроенной территории. Расчитаем площадь для GSI в квадратных метрах:

3) Рассчитаем площадь для FSI:


4) Теперь надо понять, на какую площадь будет производиться расчет. Можно смотреть плотность по районам, по кварталам, по жилым массивам (ха). А можно по регулярной сетке, если нет адм деления города. Попробуем все варианты.
Начнем с простого - если есть адм. деление. В качестве примера возьмем Казань.

Важный момент - при расчете на адм. округа или районы нужно обязательно оставить в атрибутивной таблице ваших районов только один уровень генерализации (Adm-Level). Например, если у районов города уровень 9, то нужно чтобы у вас в таблице оставались только полигоны со значением 9, а остальные надо убрать.
Просто потому что это уже другой уровень вложенности и генерализации.

5) Каждому району нужно присоединить информацию о сумме площадей домов, в него входящих. Присоединим сразу и GSI, и FSI. Это проще всего сделать с помощью инструмента "Объединение атрибутов по расположению (Сводка)" - "Join by location Summary".
Заполняем следующим образом

В результате для каждого района города появится информация о сумме площадей по этажам (FSI) или по одному этажу (GSI).

6) С помощью калькулятора полей посчитаем GSI и FSI:

В итоге получится так:

Чем больше развита высотность зданий, тем больше будут отличия между GSI и FSI.
Считаем по кварталам
1) подсчет этажности + суммарной и одиночной площадей по домам идентичен шагам выше.
2) Выбираем кварталы - берем landuse полигоны из ОСМ. В них выбираем только типы землепользования, соответствующие жилым массивам. Вот пример Казани:

Выбираем только жилые кварталы и экспортируем в отдельный слой.

3) Теперь каждому жилому кварталу по аналогии с методикой выше нужно присоединить информацию о входящих в него домах. Инструмент - Join by location Summary.

4) далее так же считаем GSI и FSI

Получится такая картина в итоге:

Считаем по регулярной сетке
Если нет нормальной информации по районам города или жилым кварталам, то наиболее оптимально будет создать квадратную/гексагональную сетку и посчитать плотность по ней
1) подсчет этажности + суммарной и одиночной площадей по домам идентичен шагам выше.
2) Создаем сетку - create grid.

3) Сетке присоединяем информацию о площадях домов (как выше)
4) Считаем GSI и FSI
итог:
