Próbuję znaleźć sposoby na ilościowe opisanie kształtów różnych wielokątów. W moim projekcie te wielokąty reprezentują jeziora, rzeki, laguny i parki. Mogą więc mieć prawie dowolny kształt. Jedną łatwą miarą jest obliczenie obwodu względem powierzchni, co w najlepszym razie jest tylko nieznacznie użyteczną miarą. Ale bardzo chciałbym móc powiedzieć coś o „okrągłości” wielokąta. Lub jak „zwarty” jest kształt na mapie.
Jedynym sposobem, w jaki mogę to zrobić z łatwością, jest obliczenie pola każdego wielokąta w stosunku do ramki granicznej dla tego wielokąta (który już mam). Ale to wydaje się złym rozwiązaniem.
Więc teraz myślę o czymś takim - weź środkową część wielokąta, dodaj serię buforów rosnących obszarów (powiedzmy 50%, 100%, 150%), a następnie porównaj, jak wiele zachodzi na siebie między poszczególnymi buforami i oryginalny wielokąt. Idealne koło będzie idealnie zachodzić na 100%, a ja mogę użyć buforów 50% i 150%, aby ocenić, jak bardzo i w jaki sposób każdy wielokąt się różni.
Ale nawet to wydaje się nieporęczne i jak kiepskie obejście tego, co ktoś inny prawdopodobnie już wymyślił o wiele lepiej.
Dla porównania, będę musiał przynajmniej spojrzeć na wynikowe wskaźniki kształtu różnych wielokątów i umieć zgadnąć, co do ich źródła (rzeka? Zbiornik o kształcie dendrytycznym? Jezioro / Laguna? Park) ?)
Odpowiedzi:
Zwartość obiektu można zmierzyć za pomocą testu Polsby-Popper , określając wynik Polsby-Popper (PP). Wynik PP jest określany przez pomnożenie obszaru wielokąta przez 4pi i podzielenie przez kwadrat do kwadratu. Używając tego, okrąg będzie miał wynik 1, a każdy inny kształt geometryczny ma mniejszy współczynnik.
dysk: (4 * PI) * PI * R² / 4PI²R² = 1
kwadrat: (4 * PI) * C² / 16 * C² = PI / 4 ~ = 0,78
Innym przydatnym indeksem może być długość / szerokość najmniejszego otaczającego prostokąta (patrz narzędzie do minimalizacji geometrii ograniczającej ). Ale w tym przypadku kwadrat i okrąg są do siebie podobne, a wklęsłość jest ignorowana.
Jako ostatnia rekomendacja, jeśli pracujesz na obwodzie, przydatne jest „wygładzenie” obiektu przed obliczeniem wskaźników, aby uniknąć efektu „fraktali” (szczególnie jeśli twoje wielokąty pochodzą z konwersji rastra na wielobok)
źródło
Miałem do czynienia z podobnym problemem i rozwiązałem równanie zarówno obwodu, jak i pola koła, aby stały się równe:
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 * pi
Indeks ten wynosi od 0 do 1, gdzie 1 jest idealnym kołem. Nie wiem, czy jest to ustalona metoda, ale chciałbym usłyszeć od każdego, kto widziałby ją gdzie indziej.
źródło
Oprócz formuły okrągłości przedstawionej przez radouxju w jego odpowiedzi i innych, takich jak stosunek powierzchni wielokąta do obszaru jego minimalnego okręgu ograniczającego -
ST_Area(geom)/(ST_Area(ST_MinimumBoundingCircle(geom)) as rnd_check
w PostGIS: często pomagam sprawdzić liczbę wierzchołków / punktów w „podejrzana” geometria -ST_NPoints(geom)
w PostGIS.Rzeczy, które robię, różnią się od tego, co opisujesz, ale uważam, że filtr NPoints pomaga odróżnić działki nieruchomości (które mogą być rzeczywiście długie i chude, oczywiście) od rzek i innych długich, chudych cech naturalnych. Istnieje dziwna długa, chuda działka, która graniczy z rzeką, ale sprawdzanie anomalii jest powodem, dla którego otrzymujemy duże pieniądze (HA!): Zawsze niezmiennie mają jedną stronę (przynajmniej) prostą na znaczną część długości obiektu, więc praca skończona.
Poza tym (w moim przepływie pracy) rzadko zdarza się, że nie ma jakiegoś identyfikatora przestrzennego, którego nie można by wprowadzić w życie, a w każdym razie duża część mojej pracy jest skonfigurowana tak, abyśmy analizowali „deltę” (zmiany w czasie) więc jeśli dane przy T = 0 są czyste i nikt nie wprowadził „ujemnych ulepszeń” dla T ∈ [0, t-1], to delta dla całego stanu
T=t|t-1
może być wykonana w ciągu pół dnia.Mnóstwo punktów w rzeczy, która jest długa i chuda i nie ma żadnej linii, która ... prawdopodobnie jest rzeką.
Zbiornik o kształcie dendrytycznym z pewnością podważyłby to przypuszczenie, ale jest prawdopodobne, że filtrowanie na całej długości kształtu może dać wyniki, jeśli cała rzeka jest jednym wielokątem (powinniśmy mieć tyle szczęścia) - lub znaleźć liczbę ścieżek od „wąski” koniec do końca grubego (liczba gałęzi).
Jezioro vs parku ... chciałbym spróbować to zrobić przez zdjęć lotniczych / satelitarnych, biorąc pod uwagę moje druthers: to drogę łatwiejszą problemu używać lądowego / klasyfikator wody, w których region być sprawdzany jest znana, nie stara się zidentyfikować i ekstrakt region wodny na obrazie, na którym lokalizacja wody nie jest znana.
Uznałem również, że ta odpowiedź (na inne pytanie) jest bardzo przydatna do rozróżniania długich, chudych funkcji.
źródło