🏫 GEOMORPHR VS MOMEPY НА ЗДАНИЯХ БЕЛГРАДА В предыдущем посте писала про новый R-пакет geomorphR, и стало интересно, насколько он сходится с momepy. Прогнала обе библиотеки по всем 200к зданиям Белграда из Overture Maps. Давайте разбираться) 1️⃣Базовые метрики совпадают. Площадь, периметр, convexity, ориентация и compactness (с точностью до множителя π/4) в обоих пакетах одинаковые. Для размера и компактности пакет можно выбирать по удобству, результаты сопоставимы. 2️⃣Одно название, противоположный смысл. shape_index в geomorphR растет, когда здание далеко от круга, а в momepy, когда оно компактное: корреляция между ними около −0,9. "Фрактальные" столбцы тоже считаются по разным формулам и почти не совпадают. Сравнивая свою работу с чужой из другого пакета, можно прийти к обратному выводу: "в центре здания сложнее" вместо "компактнее". В методике нужна формула, а не название столбца. 3️⃣Вытянутость и прямоугольность зависят от поворота карты. И это самое важное наблюдение (посмотри на гифку). geomorphR рисует рамку вокруг здания строго по осям карты (sf::st_bbox), momepy поворачивает ее вдоль здания. Реальный дом в Дорчоле, прямоугольник 2,5 к 1 под 45°, для geomorphR квадрат и прямоугольник на 40% (гифка слева). Поверни всю карту на 30°, и рейтинг 2 005 зданий Дорчола по rectangularity становится почти случайным: корреляция с исходным 0,01, у momepy 1,00 (гифка в центре и справа). Вывод: эти показатели в geomorphR описывают направление улиц, а не форму домов. Последствия: 🔥типология ошибается: длинная панельная ламела, стоящая наискосок, попадет в один класс с точечной башней. Ошибка уйдет во все расчеты по типу застройки, а наискосок в трех районах стоят 74–88% зданий; 🔥сравнение районов врет: квартал с диагональной сеткой выйдет "менее прямоугольным", чем такой же с сеткой по сторонам света; 🔥модель на этих признаках выучит ориентацию улиц одного города и сломается на другом. Пока это не исправлено, elongation, rectangularity и aspect_ratio из geomorphR лучше не брать. 4️⃣12 из 22 столбцов повторяют остальные 10. shape_index и perimeter_area_ratio - это compactness в другом масштабе, aspect_ratio - высота рамки, деленная на ширину. Проверила на 50к зданиях: совпадение до 10⁻⁹. Вывод: в кластеризации каждый столбец голосует, и компактность, посчитанная трижды, перевесит остальное: кластеры будут про компактность и размер, а не про форму целиком. В регрессии копии делят между собой "важность" и расшатывают коэффициенты. Перед анализом лучше оставить 10 исходных признаков. 5️⃣Метрики на вершинах зависят от того, кто рисовал контур. В OpenStreetMap дома обводят люди, Microsoft обводит их нейросетью по снимкам. У 55к домов Белграда есть оба контура: площадь совпадает по рангу на 0,93, число вершин только на 0,43. У каждого третьего дома geometric_complexity_score меняется больше чем на 25% просто от смены источника. Overture склеивает оба источника, и доля нейросетевых контуров разная: 18% в Новом Белграде, 9% в Дорчоле. Карта "сложности зданий" на таких данных частично показывает лоскутное одеяло источников, а не архитектуру. Это касается обоих пакетов (у momepy так же ведет себя corners), поэтому перед такими метриками надо смотреть, откуда контур. 6️⃣Скорость. На всем городе geomorphR считал 3 минуты, momepy посчитал 17 метрик за 10,5 секунды, в 17 раз быстрее. Для одного города это не критично. Для страны, ежемесячного обновления или перебора параметров уже часы против минут: на 10 млн зданий около 2,5 часа против 9 минут. 7️⃣Главное отличие. geomorphR описывает здание само по себе, momepy умеет еще тесселяцию, соседей, кварталы, улицы и space syntax. И это важно иметь ввиду, geomorphR пока генератор признаков формы для R, а не инструмент городской морфологии: все, что происходит между зданиями (соседи, кварталы, проницаемость), пока только в momepy. P.S. Если нужен код проверок - напишите в комменты, оформлю на гитхабе :) @urban_mash
URBAN MASH
Subscribers
2.3K
tracking since 12 Nov
Reach per post (ERR)
40.5%944 avg views
Posting
2.1/week
last 1 day ago
Reactions per 1K views
40.5
🔥 ❤ 👏
Views over time
| When | Views |
|---|---|
| 12 Oct 2026, 16:43 | 0 |
| 12 Nov 2026, 22:33 | 1.2K |
Who shared this post
Posts in other channels we index that link to this one. (Forwards with a hidden source can't be traced.)
Nobody yet.