Calculando a redondeza / compacidade do polígono?


13

Estou tentando encontrar maneiras de descrever quantitativamente as formas de vários polígonos. Para o meu projeto, esses polígonos representam lagos, rios, lagoas e parques. Então eles podem ter quase qualquer forma. Uma métrica fácil é calcular perímetro versus área, que é, na melhor das hipóteses, uma métrica apenas ligeiramente útil. Mas eu também gostaria de poder dizer algo sobre a 'redondeza' de um polígono. Ou quão 'compacta' a forma está em um mapa.

A única maneira de pensar em fazer isso facilmente é calcular a área de cada polígono em relação a uma caixa delimitadora para esse polígono (que eu já tenho). Mas isso parece uma solução ruim.

Então agora estou pensando em algo mais ou menos assim - pegue o centróide do polígono, adicione uma série de buffers de áreas crescentes (digamos 50%, 100%, 150%) e compare a quantidade de sobreposição entre cada buffer e o polígono original. Um círculo perfeito terá sobreposição perfeita em 100%, e eu posso usar os buffers de 50% e 150% para julgar quanto e de que maneira cada polígono difere.

Mas mesmo isso parece complicado, e é uma solução alternativa ruim para o que outra pessoa provavelmente já descobriu muito melhor.

Para referência, no mínimo, precisarei ser capaz de observar os índices resultantes da forma de vários polígonos e fazer um palpite sobre sua origem (rio? Reservatório com forma dendrítica? Lago / lagoa? Parque ?)


2
Definitivamente, consulte o Artigo Wikipedia da Roundness para uma reflexão mais aprofundada sobre o assunto. Por que não criar um buffer em torno do centróide que seja exatamente a mesma área do polígono e medir a área fora do buffer para criar algum tipo de pontuação? Você está tentando obter uma redondeza relativa entre apenas os objetos desse conjunto de dados ou precisa ser uma redondeza absoluta para que eles possam ser comparados com outros polígonos fora desse conjunto de dados?
Taylor H.

Obrigado pela resposta, que definitivamente ajuda. Um dos meus desafios é que apenas comparar áreas não será suficiente - um elipsóide oblongo pode ter o mesmo 'índice de arredondamento' que uma forma dendrítica usando esse índice. Talvez o uso desse índice de redondeza em combinação com a relação perímetro / área também consiga capturar essas diferenças. Eu não fiz esse tipo de análise antes, portanto, preciso pensar nisso. No final, eu só precisa comparar formas dentro de um conjunto de dados, mas é bastante grande (1000s de polígonos)
user25201

É verdade, mas você pode filtrar esses resultados usando a métrica área vs. perímetro para pelo menos classificar as formas de simples a complexas. Uma forma dendrítica terá uma relação área / perímetro relativamente menor (o círculo perfeito tem uma proporção de 1, o quadrado tem uma proporção de 0,5, etc.) Definitivamente, não é um problema fácil! Você terá que usar várias métricas que imagino para obter uma "pontuação de circularidade" robusta.
Taylor H.

Obrigado pela sua opinião - acho que, a partir deste ponto, tenho que experimentar esses índices e ver que tipo de resultados posso gerenciar. Talvez eu possa voltar com uma pergunta mais informada para obter mais ajuda, se necessário. Eu aprecio seu tempo!
User25201

Lembre-se de que anéis internos (orifícios) e várias peças tornarão inútil a comparação área-perímetro. Você pode usar apenas os anéis externos para gerar uma métrica, mas os valores de ponderação das peças individuais podem ser um desafio.
Vince

Respostas:


18

A compactação de um objeto pode ser medida usando o teste de Polsby-Popper , determinando a pontuação de Polsby-Popper (PP). A pontuação do PP é determinada multiplicando a área do polígono por 4pi e dividindo pelo perímetro quadrado. Usando isso, um círculo terá uma pontuação de 1 e qualquer outra forma geométrica tem uma proporção menor.

disco: (4 * PI) * PI * R² / 4PI²R² = 1

quadrado: (4 * PI) * C² / 16 * C² = PI / 4 ~ = 0,78

Outro índice útil pode ser o comprimento / largura do menor retângulo delimitador (consulte a ferramenta de geometria de limite mínima ). Mas, neste caso, o quadrado e o círculo são iguais e a concavidade é ignorada.

Como última recomendação, se você trabalha com perímetro, é útil "suavizar" seu objeto antes de calcular os índices, a fim de evitar o efeito "fractal" (especialmente se seus polígonos vierem da conversão de varredura para polígono)


Isso ajuda, obrigado. Meus polígonos não vêm de rasters, mas esse é um ponto excelente que eu nem tinha considerado! Definitivamente vou fazer isso.
user25201

Fonte de fórmulas?
Taylor H.

Desculpe, não me lembro: - ~. Provavelmente em um artigo sobre ecologia da paisagem. Eu o usei pela primeira vez há muito tempo e adicionei a "normalização" para mais conveniência.
Radouxju

3
@ Taylor Esta é uma das muitas caracterizações possíveis de "compacidade". Os métodos típicos comparam a área do recurso com uma medida de sua tortuosidade ou extensão espacial. As últimas medidas podem incluir não apenas perímetro, mas também diâmetro e tamanhos dos recursos delimitadores (como caixa delimitadora de área mínima, elipse delimitadora de área mínima e circunferência). Os mais exóticos incluiriam áreas de vários buffers e uma dimensão fractal estimada. O desafio na maioria das situações não está no cálculo dessas medidas, mas na decisão de qual delas é mais relevante para o aplicativo.
whuber

4

Eu estava enfrentando um problema semelhante e acabei resolvendo a equação da circunferência e da área de um círculo para torná-los iguais um ao outro da seguinte maneira:

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

Este índice está entre 0 e 1, onde 1 é um círculo perfeito. Não sei se esse é um método estabelecido, mas eu adoraria ouvir qualquer pessoa que o tenha visto em outro lugar.


Bom desenvolvimento a partir do zero. essa é a lógica de Polby-Popper que mencionei no meu post, exceto que você assumiu a raiz quadrada. basicamente, ele não irá alterar a classificação se você raiz quadrada-lo (ou não)
radouxju

3

Além da fórmula de arredondamento delineada por radouxju em sua resposta e outras como a proporção da área do polígono para a área de seu círculo delimitador mínimo - ST_Area(geom)/(ST_Area(ST_MinimumBoundingCircle(geom)) as rnd_checkno PostGIS: eu acho que muitas vezes ajuda a verificar o número de vértices / pontos em um geometria 'suspeita' - ST_NPoints(geom)no PostGIS.

O que faço é diferente do que você está descrevendo, mas acho que o filtro NPoints ajuda a discriminar parcelas de propriedades (que podem ser longas e finas, é claro) e rios e outros recursos naturais de longa duração. Existe uma parcela de propriedade longa e esbelta que beira um rio, mas a verificação de anomalias é o motivo pelo qual pagamos muito dinheiro (HA!): Eles sempre têm um lado (pelo menos) que é direto para uma boa parte do comprimento do recurso, então o trabalho está feito.

Além disso, é raro (no meu fluxo de trabalho) que não exista um identificador aspático que não possa ser utilizado e, de qualquer forma, muito do meu trabalho é configurado para que analisemos o 'delta' (alterações ao longo do tempo) portanto, se os dados em T = 0 estão limpos e ninguém introduziu 'aprimoramentos negativos' para T ∈ [0, t-1], o delta para um estado inteiro T=t|t-1pode ser feito em meio dia.

Cargas de pontos em uma coisa que é longa e magra e não tem nenhuma linha que seja ... provavelmente um rio.

Um reservatório com uma forma dendrítica certamente desafiaria esse palpite, mas é provável que a filtragem no comprimento total da forma possa produzir resultados se todo o rio for um polígono (teremos muita sorte) - ou encontrar o número de caminhos a partir do rio. extremidade "estreita" para a extremidade gorda (o número de ramos).

Lake vs park ... Eu tentaria fazer isso por imagens aéreas / de satélite, considerando meus druthers: é um problema muito mais fácil usar um classificador de terra / água onde a região a ser verificada é conhecida do que tentar identificar e extrair um região da água a partir de uma imagem em que a localização da água não é conhecida.

Eu também achei essa resposta (para uma pergunta diferente) muito útil para discriminar entre recursos de longa duração.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.