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 ?)
Réponses:
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)
la source
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.
la source
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_check
dans 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-1
peut ê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.
la source