Я пытаюсь найти способы количественно описать формы различных полигонов. Для моего проекта эти полигоны представляют озера, реки, лагуны и парки. Поэтому они могут быть практически любой формы. Одна из простых метрик - это вычисление периметра и площади, которая в лучшем случае является лишь немного полезной метрикой. Но я также очень хотел бы сказать что-то о «округлости» многоугольника. Или как «компактная» форма на карте.
Единственный способ сделать это легко - это вычислить площадь каждого многоугольника относительно ограничивающего прямоугольника для этого многоугольника (который у меня уже есть). Но это кажется плохим решением.
Итак, теперь я думаю о чем-то более похожем на это - возьмите центроид многоугольника, добавьте ряд буферов увеличивающихся областей (скажем, 50%, 100%, 150%), затем сравните, насколько много совпадений между каждым буфером и оригинальный полигон. Идеальный круг будет иметь идеальное перекрытие на 100%, и я могу использовать буферы 50% и 150%, чтобы судить, насколько и чем отличается каждый полигон.
Но даже это кажется обременительным и похоже на плохой обходной путь для того, что кто-то еще, вероятно, уже понял намного лучше.
Для справки, как минимум, мне нужно будет иметь возможность смотреть на полученные индексы для формы различных многоугольников и уметь делать обоснованное предположение об их источнике (Река? Водохранилище с дендритной формой? Озеро / Лагуна? Парк ?)
Ответы:
Компактность объекта может быть измерена с использованием теста Полсби-Поппера путем определения показателя Полсби-Поппера (ПП). Оценка PP определяется путем умножения площади полигона на 4pi и деления на квадрат периметра. Используя это, у круга будет оценка 1, и у любой другой геометрической формы есть меньшее отношение.
диск: (4 * PI) * PI * R² / 4PI²R² = 1
квадрат: (4 * PI) * C² / 16 * C² = PI / 4 ~ = 0,78
Другим полезным индексом может быть длина / ширина наименьшего вмещающего прямоугольника (см. Инструмент минимальной ограничивающей геометрии ). Но в этом случае квадрат и круг похожи, а вогнутость игнорируется.
В качестве последней рекомендации, если вы работаете с периметром, полезно «сгладить» ваш объект перед вычислением индексов, чтобы избежать эффекта «фрактала» (особенно если ваши полигоны переходят из преобразования растра в полигон)
источник
Я столкнулся с подобной проблемой и в итоге решил уравнение для окружности и площади круга, чтобы они были равны между собой, вот так:
2 * pi * r = c <=> r = c / 2 * pi pi * r ^ 2 = a <=> r = sqrt (a / pi)
c / 2 * pi = sqrt (a / pi) <=>
SQRT (а / р)
-------------- = 1
с / 2 * пи
Этот индекс находится между 0 и 1, где 1 - идеальный круг. Я не знаю, является ли это установленным методом, но я хотел бы услышать от любого, кто, возможно, видел это в другом месте.
источник
В дополнение к формуле округлости, изложенной Радою в его ответе, и другим, таким как отношение площади многоугольника к площади его минимального ограничивающего круга -
ST_Area(geom)/(ST_Area(ST_MinimumBoundingCircle(geom)) as rnd_check
в PostGIS: я часто нахожу, что помогает проверить количество вершин / точек в «подозрительная» геометрия -ST_NPoints(geom)
в PostGIS.То, что я делаю, отличается от того, что вы описываете, но я обнаружил, что фильтр NPoints помогает различать участки свойств (которые на самом деле могут быть длинными и худыми, конечно) и реки и другие длинные тощие природные объекты. Есть странная длинная, тощая собственность, которая граничит с рекой, но проверка аномалий - вот почему нам платят большие деньги (HA!): У них неизменно есть одна сторона (по крайней мере), которая является прямой для значительной части длины объекта, так что работа сделана
Кроме того, это редко (в моем рабочем процессе), что нет какого-то конкретного пространственного идентификатора, который не может быть использован, и в любом случае большая часть моей работы настроена так, что мы анализируем «дельта» (изменения во времени) поэтому, если данные при T = 0 чистые и никто не ввел «отрицательных улучшений» для T ∈ [0, t-1], то дельта для всего состояния for
T=t|t-1
может быть выполнена за полдня.Множество точек в чем-то длинном и тощем и не имеет ни единой линии, которая ... вероятно, река.
Резервуар с дендритной формой, безусловно, может опровергнуть это предположение, но вполне вероятно, что фильтрация по всей длине формы может дать результаты, если вся река будет одним многоугольником (нам должно быть так повезло) - или найти число путей из «узкий» конец к толстому концу (количество ветвей).
Озеро против парка ... Я хотел бы попробовать сделать это с помощью антенны / спутниковых снимков, учитывая мои druthers: это стороннее простую задачу использовать земельный / воду классификатор , где область будет проверяться , как известно, чем пытаться идентифицировать и извлекает область воды из изображения, где местоположение воды неизвестно.
Я также нашел этот ответ (на другой вопрос) очень полезным для различения длиннохвостых черт.
источник