Calcul de la rondeur / compacité du polygone?

13

J'essaie de trouver des moyens de décrire quantitativement les formes de divers polygones. Pour mon projet, ces polygones représentent des lacs, des rivières, des lagunes et des parcs. Ils peuvent donc avoir presque n'importe quelle forme. Une mesure simple consiste à calculer le périmètre par rapport à la surface, qui est au mieux une mesure à peine utile. Mais j'aimerais aussi beaucoup pouvoir dire quelque chose sur la «rondeur» d'un polygone. Ou à quel point la forme est «compacte» sur une carte.

La seule façon dont je peux penser à le faire facilement est de calculer l'aire de chaque polygone par rapport à un cadre de délimitation pour ce polygone (que j'ai déjà). Mais cela semble être une mauvaise solution.

Alors maintenant, je pense à quelque chose de plus comme ça - prenez le centroïde du polygone, ajoutez une série de tampons de zones croissantes (disons 50%, 100%, 150%), puis comparez le chevauchement entre chaque tampon et le polygone d'origine. Un cercle parfait aura un chevauchement parfait à 100%, et je peux utiliser les tampons 50% et 150% pour juger de la quantité et de la façon dont chaque polygone diffère.

Mais même cela semble lourd, et comme une mauvaise solution de contournement pour ce que quelqu'un d'autre a probablement déjà mieux compris.

Pour référence, au minimum, je devrai être en mesure de regarder les indices résultants pour la forme de divers polygones, et être capable de faire une supposition éclairée quant à leur source (rivière? Réservoir avec forme dendritique? Lac / lagune? Parc ?)

user25201
la source
2
Consultez certainement l'article Wikipedia sur la rondeur pour une réflexion plus approfondie sur le sujet. Pourquoi ne pas simplement créer un tampon autour du centroïde qui est exactement la même zone que le polygone, puis mesurer la zone en dehors du tampon pour créer un type de score? Essayez-vous d'obtenir un arrondi relatif uniquement entre les objets de cet ensemble de données, ou faut-il que ce soit un arrondi absolu pour pouvoir les comparer à d'autres polygones en dehors de cet ensemble de données?
Taylor H.
Merci pour la réponse, ça aide vraiment. L'un de mes défis est qu'il ne suffit pas de comparer des zones - un ellipsoïde oblong peut avoir le même «indice de rondeur» qu'une forme dendritique utilisant cet indice. Peut-être que l'utilisation de cet indice de rondeur en combinaison avec la relation périmètre / surface pourra également capturer ces différences, je n'ai pas fait ce genre d'analyses auparavant, donc je devrai y réfléchir. Au final, je n'aurai besoin que de comparer des formes au sein d'un même jeu de données, mais il est assez volumineux (des milliers de polygones)
user25201
Certes, mais vous pouvez ensuite filtrer ces résultats à l'aide de la métrique surface vs périmètre pour au moins trier les formes de simples à complexes. Une forme dendritique aura un rapport surface / périmètre relativement inférieur (le cercle parfait a un rapport de 1, le carré a un rapport de 0,5, etc.) Ce n'est certainement pas un problème facile! Vous devrez utiliser plusieurs métriques que j'imagine pour obtenir un "score de rondeur" robuste.
Taylor H.
Merci pour votre contribution - je pense qu'à partir de ce moment, je dois essayer ces indices et voir quel genre de résultats je peux gérer. Ensuite, je pourrai peut-être revenir avec une question plus éclairée pour obtenir de l'aide, si nécessaire. J'apprécie votre temps!
user25201
Gardez à l'esprit que les anneaux intérieurs (trous) et les pièces multiples rendront la comparaison zone-v-périmètre inutile. Vous pouvez utiliser uniquement les anneaux extérieurs pour générer une métrique, mais les valeurs de pondération des pièces individuelles pourraient être un défi.
Vince

Réponses:

18

La compacité d'un objet peut être mesurée à l'aide du test de Polsby-Popper en déterminant le score de Polsby-Popper (PP). Le score PP est déterminé en multipliant l'aire du polygone par 4pi et en divisant par le périmètre carré. En utilisant cela, un cercle aura un score de 1 et toute autre forme géométrique aura un rapport plus petit.

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

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

Un autre indice utile pourrait être la longueur / largeur du plus petit rectangle englobant (voir l' outil de géométrie de délimitation minimale ). Mais dans ce cas, le carré et le cercle sont semblables et la concavité est ignorée.

Comme dernière recommandation, si vous travaillez avec un périmètre, il est utile de "lisser" votre objet avant de calculer les indices, afin d'éviter un effet "fractal" (surtout si vos polygones proviennent de la conversion raster en polygone)

radouxju
la source
Cela aide, merci. Mes polygones ne proviennent pas de rasters, mais c'est un excellent point que je n'avais même pas considéré! Je vais certainement le faire.
user25201
Source de formules?
Taylor H.
Désolé, je ne me souviens pas: - ~. Probablement dans un article sur l'écologie du paysage. Je l'ai utilisé pour la première fois il y a longtemps, et j'ai ajouté la "normalisation" pour plus de commodité.
radouxju
3
@Taylor C'est l'une des nombreuses caractérisations possibles de la "compacité". Les méthodes typiques comparent la zone de l'entité à une mesure de sa tortuosité ou de son étendue spatiale. Ces dernières mesures peuvent inclure non seulement le périmètre mais aussi le diamètre et la taille des entités délimitantes (telles que la zone de délimitation de la zone minimale, l'ellipse de délimitation de la zone minimale et le cercle circonscrit). Les plus exotiques incluraient des zones de tampons divers et une dimension fractale estimée. Le défi dans la plupart des situations ne réside pas dans le calcul de ces mesures mais dans la décision de celle qui est la plus pertinente pour l'application.
whuber
4

J'étais confronté à un problème similaire et j'ai fini par résoudre l'équation de la circonférence et de l'aire d'un cercle pour les rendre égales comme suit:

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

Cet indice est compris entre 0 et 1 où 1 est un cercle parfait. Je ne sais pas si c'est une méthode établie mais j'aimerais avoir des nouvelles de quiconque aurait pu la voir ailleurs.

JohanOlsen
la source
Beau développement à partir de zéro. c'est la raison d'être de Polby-Popper que j'ai mentionnée dans mon post, sauf que vous avez pris la racine carrée. fondamentalement, cela ne changera pas le classement si vous le
racinez
3

En plus de la formule d'arrondi décrite par radouxju dans sa réponse et d'autres comme le rapport de l'aire du polygone à l'aire de son cercle de délimitation minimum - ST_Area(geom)/(ST_Area(ST_MinimumBoundingCircle(geom)) as rnd_checkdans PostGIS: je trouve qu'il est souvent utile de vérifier le nombre de sommets / points dans un géométrie «suspecte» - ST_NPoints(geom)dans PostGIS.

Ce que je fais est différent de ce que vous décrivez, mais je trouve que le filtre NPoints permet de faire la distinction entre les parcelles de propriétés (qui peuvent en fait être longues et maigres, bien sûr) et les rivières et autres caractéristiques naturelles à longue maigre. Il y a une parcelle de propriété étrange et maigre qui borde une rivière, mais la vérification des anomalies est la raison pour laquelle nous sommes payés les gros dollars (HA!): Ils ont toujours un côté (au moins) qui est droit pour une bonne partie de la longueur de la fonctionnalité, donc le travail est fait.

De plus, il est rare (dans mon flux de travail) qu'il n'y ait pas d'identifiant aspatial qui ne puisse pas être utilisé, et en tout cas beaucoup de mon travail est configuré de sorte que nous analysons le `` delta '' (changements dans le temps) donc si les données à T = 0 sont propres et que personne n'a introduit d '«améliorations négatives» pour T ∈ [0, t-1], alors le delta pour un état entier pour T=t|t-1peut être fait en une demi-journée.

Des tas de points dans une chose qui est longue et maigre et qui n'a pas une seule ligne qui est ... probablement une rivière.

Un réservoir avec une forme dendritique remettrait certainement en question cette supposition, mais il est probable que le filtrage sur la longueur totale de la forme puisse donner des résultats si toute la rivière est un polygone (nous devrions être si chanceux) - ou trouver le nombre de chemins à partir de la extrémité «étroite» à l'extrémité grasse (le nombre de branches).

Lac vs parc ... J'essaierais de le faire par imagerie aérienne / satellite, étant donné mes druthers: c'est un problème beaucoup plus facile d'utiliser un classificateur terre / eau où la région à vérifier est connue, que d'essayer d'identifier et d'extraire un région de l'eau à partir d'une image où l'emplacement de l'eau n'est pas connu.

J'ai également trouvé cette réponse (à une question différente) très utile pour faire la distinction entre les fonctionnalités longues et maigres.

GT.
la source