Расчет округлости / компактности многоугольника?

13

Я пытаюсь найти способы количественно описать формы различных полигонов. Для моего проекта эти полигоны представляют озера, реки, лагуны и парки. Поэтому они могут быть практически любой формы. Одна из простых метрик - это вычисление периметра и площади, которая в лучшем случае является лишь немного полезной метрикой. Но я также очень хотел бы сказать что-то о «округлости» многоугольника. Или как «компактная» форма на карте.

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

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

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

Для справки, как минимум, мне нужно будет иметь возможность смотреть на полученные индексы для формы различных многоугольников и уметь делать обоснованное предположение об их источнике (Река? Водохранилище с дендритной формой? Озеро / Лагуна? Парк ?)

user25201
источник
2
Обязательно ознакомьтесь со статьей Roundness Wikipedia для более глубокого размышления на эту тему. Почему бы просто не создать буфер вокруг центроида, который является точно такой же областью, что и многоугольник, а затем измерить область за пределами буфера, чтобы создать некоторый тип оценки? Вы пытаетесь получить относительную округлость только между объектами в этом наборе данных, или это должна быть абсолютная округлость, чтобы их можно было сравнить с другими полигонами за пределами этого набора данных?
Тейлор Х.
Спасибо за ответ, это определенно помогает. Одна из моих проблем заключается в том, что простого сравнения областей будет недостаточно - продолговатый эллипсоид может иметь тот же «индекс округлости», что и дендритная форма при использовании этого индекса. Возможно, использование этого индекса округлости в сочетании с отношением периметр / площадь также позволит отразить эти различия, я раньше не проводил такого рода анализы, поэтому мне нужно подумать над этим. В конце мне нужно будет сравнить фигуры только в одном наборе данных, но он довольно большой (тысячи полигонов)
user25201
Верно, но тогда вы можете отфильтровать эти результаты, используя метрику площади и периметра, чтобы хотя бы отсортировать фигуры от простых к сложным. Дендритная форма будет иметь относительно более низкое отношение площади к периметру (идеальный круг имеет отношение 1, квадрат имеет отношение 0,5 и т. Д.) Определенно непростая проблема! Вам придется использовать несколько метрик, которые я представляю, чтобы получить надежный «показатель округлости».
Тейлор Х.
Спасибо за ваш вклад - я думаю, что с этого момента я должен опробовать эти показатели и посмотреть, какими результатами я смогу управлять. Тогда, возможно, я смогу вернуться с более информированным вопросом для дальнейшей помощи, если это необходимо. Я ценю ваше время!
user25201
Имейте в виду, что внутренние кольца (отверстия) и несколько деталей сделают сравнение площадь-периметр бесполезным. Вы можете использовать только внешние кольца для создания метрики, но взвешивание значений из отдельных частей может быть проблемой.
Винс

Ответы:

18

Компактность объекта может быть измерена с использованием теста Полсби-Поппера путем определения показателя Полсби-Поппера (ПП). Оценка PP определяется путем умножения площади полигона на 4pi и деления на квадрат периметра. Используя это, у круга будет оценка 1, и у любой другой геометрической формы есть меньшее отношение.

диск: (4 * PI) * PI * R² / 4PI²R² = 1

квадрат: (4 * PI) * C² / 16 * C² = PI / 4 ~ = 0,78

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

В качестве последней рекомендации, если вы работаете с периметром, полезно «сгладить» ваш объект перед вычислением индексов, чтобы избежать эффекта «фрактала» (особенно если ваши полигоны переходят из преобразования растра в полигон)

radouxju
источник
Это помогает, спасибо. Мои полигоны не происходят от растров, но это превосходное замечание, о котором я даже не задумывался! Я обязательно сделаю это.
user25201
Источник формул?
Тейлор Х.
Извините, я не помню: - ~. Вероятно, в статье о ландшафтной экологии. Я использовал его впервые очень давно и добавил «нормализацию» для большего удобства.
Radouxju
3
@ Тейлор Это одна из многих возможных характеристик «компактности». Типичные методы сравнивают площадь объекта с показателем его извилистости или пространственной протяженности. Последние меры могут включать не только периметр, но также диаметр и размеры ограничивающих элементов (таких как ограничивающий прямоугольник минимальной площади, ограничивающий эллипс минимальной площади и окружность). Более экзотические из них включают области различных буферов и предполагаемую фрактальную размерность. В большинстве случаев проблема заключается не в том, чтобы вычислить эти показатели, а в том, какой из них наиболее подходит для приложения.
whuber
4

Я столкнулся с подобной проблемой и в итоге решил уравнение для окружности и площади круга, чтобы они были равны между собой, вот так:

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 - идеальный круг. Я не знаю, является ли это установленным методом, но я хотел бы услышать от любого, кто, возможно, видел это в другом месте.

JohanOlsen
источник
Хорошая разработка с нуля. это объяснение Полби-Поппера, о котором я упоминал в своем посте, за исключением того, что вы взяли квадратный корень. в основном это не изменит рейтинг, если вы квадратный корень это (или нет)
Radouxju
3

В дополнение к формуле округлости, изложенной Радою в его ответе, и другим, таким как отношение площади многоугольника к площади его минимального ограничивающего круга - 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: это стороннее простую задачу использовать земельный / воду классификатор , где область будет проверяться , как известно, чем пытаться идентифицировать и извлекает область воды из изображения, где местоположение воды неизвестно.

Я также нашел этот ответ (на другой вопрос) очень полезным для различения длиннохвостых черт.

GT.
источник