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 ?)
Respostas:
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)
fonte
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.
fonte
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_check
no 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-1
pode 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.
fonte