Обчислення округлості / компактності багатокутника?


14

Я намагаюся знайти способи кількісно описати форми різних багатокутників. Для мого проекту ці багатокутники представляють озера, річки, лагуни та парки. Так вони можуть бути практично будь-якої форми. Одним простим показником є ​​обчислення периметра та площі, що в кращому випадку є лише трохи корисною метрикою. Але я також дуже хотів би сказати щось про «округлість» багатокутника. Або наскільки "компактна" форма на карті.

Єдиний спосіб мені легко зробити це - обчислити площу кожного багатокутника по відношенню до обмежувального поля для цього полігону (який у мене вже є). Але це здається поганим рішенням.

Тому зараз я думаю про щось подібне - візьміть центроїд багатокутника, додайте на нього ряд буферів, що збільшуються (наприклад, 50%, 100%, 150%), а потім порівняйте, скільки перекриттів між кожним буфером і оригінальний багатокутник. Ідеальне коло матиме ідеальне перекриття на 100%, і я можу використовувати буфери 50% та 150%, щоб оцінити, наскільки і чим відрізняється кожен багатокутник.

Але навіть це відчуває себе громіздко і, як поганий спосіб вирішення того, що хтось інший, мабуть, уже зрозумів набагато краще.

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


2
Однозначно перегляньте статтю Вікіпедії "Круглості" для глибшого роздуму над цією темою. Чому б просто не створити буфер навколо центроїда, який є точно такою самою площею, як полігон, а потім виміряти площу поза буфером, щоб створити деякий тип оцінки? Чи намагаєтесь ви отримати відносну округлість між лише об'єктами в цьому наборі даних, чи потрібно абсолютної округлості, щоб їх можна порівняти з іншими полігонами поза цим набором даних?
Тейлор Х.

Дякую за відповідь, що безумовно допомагає. Однією з моїх проблем є те, що просто порівняння областей буде недостатньою - довгастий еліпсоїд може мати той же «індекс округлості», що і дендритна форма за допомогою цього індексу. Можливо, використання цього індексу округлості в поєднанні із співвідношенням периметр / площа також зможе зафіксувати ці відмінності, я такого аналізу ще не робив, тому мені потрібно буде подумати над цим. Зрештою, мені потрібно буде лише порівняти фігури в межах одного набору даних, але він досить великий (1000 тисяч полігонів)
user25201

Правда, але тоді ви можете відфільтрувати ці результати, використовуючи метрику області та периметра, щоб принаймні сортувати фігури від простих до складних. Форма дендриту матиме відносно нижче співвідношення площі до периметра (ідеальне коло має відношення 1, квадрат має відношення 0,5 тощо). Однозначно непроста проблема! Вам потрібно буде використовувати декілька показників, які я уявляю, щоб досягти надійного "показника округлості".
Тейлор Х.

Дякую за ваш внесок - я думаю, що з цього моменту я маю випробувати ці показники і побачити, якими результатами я можу керувати. Тоді, можливо, я можу повернутися з більш усвідомленим запитанням для подальшої допомоги, якщо це буде потрібно. Я ціную ваш час!
користувач25201

Майте на увазі, що внутрішні кільця (отвори) та декілька деталей зроблять порівняння площі в периметрі марним. Ви можете використовувати лише зовнішні кільця для створення метрики, але значення ваги з окремих деталей можуть стати проблемою.
Вінс

Відповіді:


18

Компактність об'єкта може бути виміряна за допомогою тесту Полсбі-Поппера , визначивши показник Полсбі-Поппер (ПП). Оцінка PP визначається шляхом множення площі полігона на 4пі і ділення на периметр. Використовуючи це, коло матиме бал 1, а будь-яка інша геометрична форма має менший коефіцієнт.

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

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

Іншим корисним індексом може бути довжина / ширина найменшого огороджувального прямокутника (див. Інструмент мінімальної обмежувальної геометрії ). Але в цьому випадку квадрат і коло однакові, а увігнутість ігнорується.

В якості останньої рекомендації, якщо ви працюєте з периметром, корисно "згладити" ваш об'єкт перед обчисленням індексів, щоб уникнути "фрактального" ефекту (особливо, якщо ваші багатокутники походять від растрового перетворення на багатокутник)


Це допомагає, дякую. Мої багатокутники не походять із растерів, але це чудовий момент, про який я навіть не вважав! Я обов'язково зроблю це.
користувач25201

Джерело формул?
Тейлор Х.

Вибачте, я не пам’ятаю: - ~. Напевно, у статті про екологію ландшафту. Я вперше користувався ним давно, і для більшої зручності додав "нормалізацію".
radouxju

3
@Taylor Це одна з багатьох можливих характеристик "компактності". Типові методи порівнюють площу функції з мірою її звивистості або просторового ступеня. Останні заходи можуть включати не тільки периметр, але також діаметр і розміри обмежувальних ознак (наприклад, обмежувальний ящик з мінімальною площею, еліпс, що обмежує мінімальну площу, і окружність). Більш екзотичні включатимуть області різних буферів та оцінену фрактальну розмірність. Проблема в більшості ситуацій полягає не в обчисленні цих заходів, а у вирішенні того, який з них є найбільш відповідним для заявки.
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 (a / pi)

-------------- = 1

c / 2 * пі

Цей показник знаходиться між 0 і 1, де 1 - ідеальне коло. Я не знаю, це це усталений метод, але я хотів би почути від когось, хто, можливо, бачив це деінде.


Приємний розвиток з нуля. це міркування Полбі-Поппера, про яке я згадував у своєму дописі, за винятком того, що ви взяли квадратний корінь. в основному, це не змінить рейтинг, якщо ви
виправте

3

Окрім формули округлості, окресленої radouxju у своїй відповіді, та інших, як відношення площі багатокутника до площі його мінімального обмежувального кола - ST_Area(geom)/(ST_Area(ST_MinimumBoundingCircle(geom)) as rnd_checkу PostGIS: я вважаю, що це часто допомагає перевірити кількість вершин / точок у "підозріла" геометрія - ST_NPoints(geom)в PostGIS.

Те, що я роблю, відрізняється від того, що ви описуєте, але я вважаю, що фільтр NPoints допомагає розмежувати пачки власності (які, звичайно, можуть бути довгими та худими, звичайно) та річками та іншими природними особливостями, що мають довгу шкіру. Існує дивна довга, струнка ділянка власності, яка межує з річкою, але аномалія перевіряє, чому нам платять великі долари (HA!): Вони незмінно мають одну сторону (принаймні), що прямо за хорошу частину довжини функції, значить, робота зроблена.

Крім того, рідко (в моєму робочому процесі) немає жодного асистемного ідентифікатора, який не можна принести, і в будь-якому випадку багато моєї роботи налаштовано так, що ми аналізуємо «дельту» (зміни протягом часу) тому, якщо дані при T = 0 є чистими, і ніхто не вводив «негативних покращень» для T ∈ [0, t-1], тоді дельта для цілого стану для T=t|t-1можна зробити за півдня.

Безліч очок у речі, яка довга і худа, і не має жодної лінії, що ... ймовірно, річка.

Водосховище з дендритною формою, безумовно, кине виклик цій здогадці, але ймовірно, що фільтрація по загальній довжині форми може дати результати, якщо вся річка є одним багатокутником (нам так пощастить) - або знайти кількість шляхів від 'вузький' кінець до жирового кінця (кількість гілок).

Озеро проти парку ... Я б спробував це зробити за допомогою повітряних / супутникових знімків, враховуючи мої барабани: набагато простіше проблему використовувати класифікатор землі / води, де відомий регіон, що перевіряється, ніж намагатися визначити та витягнути водна область із зображення, де розташування води невідоме.

Я також вважав цю відповідь (на інше питання) дуже корисною для розмежування особливостей довгих худих.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.