Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 03 July 2015 09:38

GuZzO
Juste Inscrit !
Date d'inscription: 17 Jun 2009
Messages: 9

QGIS 2.6 : calcul de l'élongation des polygones

Bonjour,
le post est un doublon de celui-ci (http://georezo.net/forum/viewtopic.php?id=61969) mais il concerne QGis donc je poste dans cette section.

Je cherche à calculer les indices de Morton (indice d'élongation) pour une série de polygones mais les résultats obtenus ne sont pas satisfaisants en utilisant des modèles que j'ai trouvé ici (https://github.com/igeofr/qgis2).


Indice de Morton : Rapport de la superficie d'une entité, à celle d'un cercle de même périmètre = Imor = Area / Pi*(0,5*L)²
(Vaut 1 si le polygone est un cercle, 0 s'il est de surface nulle)



Le modèle proposé pour QGis (https://raw.githubusercontent.com/igeof … rton.model) utilise cette formule :


($area)/($pi*((0.5*bounds_height( $geometry ))*(0.5*bounds_height( $geometry ))))


J'ai l'impression que ce mode de calcul rend l'indice dépendant de l'orientation du polygone car pour des géométries similaires on a des indices significativement différents. Et accessoirement les indices vont bien au-delà de 1 alors que je pensais qu'il était borné à 1...

Et dernier point, les résultats sont encore différents si je les calcule manuellement.

D'où ma question :
Est-ce pertinent d'assimiler le bounds_height à L la largeur maximale du polygone ?

Merci par avance pour vos éclairages !



EDIT :
La seule méthode détaillée que j'ai trouvé pour le calcul de L est la suivante mais elle n'est pas claire pour moi...

La procédure utilisée pour déterminer L consiste à créer un TIN (Triangulated Irregular Network)* à partir des polygones puis à en extraire les nœuds. Une jointure spatiale entre ces nœuds et les arcs des polygones permet d’affecter aux nœuds les attributs topologiques des arcs (polygone de gauche, polygone de droite). Le fichier des nœuds est ensuite dupliqué pour calculer toutes les distances point à point dans un rayon maximum englobant le plus grand des polygones. Par jointure, chaque distance se voit affecter les attributs topologiques associés au point d’origine et au point d’arrivée. Des sélections multiples sur ces valeurs permettent de définir le polygone auquel appartient chaque distance. L’agrégation de ces données selon l’identifiant des polygones permet d’isoler la distance maximum pour chaque surface. Il faut noter que cette longueur L ne correspond pas de manière systématique au diamètre du cercle circonscrit à l’entité spatiale, le rayon du plus petit cercle circonscrit à l’ES et celui du plus grand cercle inscrit dans l’ES étant deux mesures qui interviennent dans le calcul de plusieurs paramètres de forme classiquement utilisés (comme les indices d’aplatissement ou de compacité (cf. Stoddart, D. R., 1965 ; Cauvin, C. & Rimbert, S., 1976 ).


Source : http://histoiremesure.revues.org/772

Dernière modification par GuZzO (Fri 03 July 2015 09:41)

Hors ligne

 

#2 Wed 15 July 2015 13:23

Paul
Participant assidu
Lieu: Paris
Date d'inscription: 31 Jul 2008
Messages: 158

Re: QGIS 2.6 : calcul de l'élongation des polygones

Bonjour,

Je ne connais pas cet indice, mais si la définition que tu proposes "Rapport de la superficie d'une entité, à celle d'un cercle de même périmètre" est la bonne, il est possible de procéder comme suit :
1 - Le périmètre de ton entité est connu (P), l'aire également (A).
2 - L'aire d'un cercle est A_cercle = Pi * r^2 et le périmètre est P_cercle = 2 * Pi * r
3 - L'aire d'un cercle peut donc s'exprimer en fonction de son périmètre : A_cercle = Pi * (P_cercle / (2*Pi))^2
4 - Selon ta définition, l'indice de Morton est : M = A / A_cercle, soit : M = A / ( Pi * (P_cercle / (2*Pi))^2 ) or P_cercle est égal à P selon la définition
5 - En mode calculatrice de champ QGIS, ça nous donne :
$area /  (pi() * (( $perimeter / (2* pi()) ) * ( $perimeter /(2* pi()) )))
J'ai vérifié, ça a l'air de fonctionner.


Paul

Hors ligne

 

#3 Wed 15 July 2015 13:48

Ludo
Participant assidu
Lieu: Messanges
Date d'inscription: 5 Sep 2005
Messages: 231
Site web

Re: QGIS 2.6 : calcul de l'élongation des polygones

GuZzO a écrit:

D'où ma question :
Est-ce pertinent d'assimiler le bounds_height à L la largeur maximale du polygone ?


Bonjour
Non je ne pense pas
La plus grande longueur se détermine par le segment passant par des sommets du polygone et qui fait la plus grande longueur, la bounding box est un carré orienté au nord
La manière que j'utilise est de parcourir les sommets du polygone en créant les différents segments possibles et en ne gardant au final que celui qui est le plus grand
J'ai un utilitaire qui fait ça mais qui n'est pas en ligne, si tu veux je dois pouvoir essayer sur un jeu de données pour te montrer les résultats (l'outil n'est pas diffusable en l'état, il le sera prochainement enfin j'espère)
Attention l'indice de Morton a des limites, en particulier avec des polygones complexes puisque le plus grand segment peut dans ce cas là couper le polygone ...

Hors ligne

 

#4 Wed 15 July 2015 14:59

Ludo
Participant assidu
Lieu: Messanges
Date d'inscription: 5 Sep 2005
Messages: 231
Site web

Re: QGIS 2.6 : calcul de l'élongation des polygones

En tout cas je n'obtiens pas les mêmes résultats avec la formule proposée par Paul et avec mon outil ...

Hors ligne

 

#5 Sun 19 July 2015 16:42

Paul
Participant assidu
Lieu: Paris
Date d'inscription: 31 Jul 2008
Messages: 158

Re: QGIS 2.6 : calcul de l'élongation des polygones

Bonjour,

Il y a un aspect qui m'échappe, si la définition de l'indice de Morton est bien la suivante :

" Rapport de la superficie d'une entité, à celle d'un cercle de même périmètre"

Je ne vois pas bien pourquoi il faut utiliser la plus grande longueur du polygone pour cet indice ?


Paul

Hors ligne

 

#6 Thu 23 July 2015 14:50

Ludo
Participant assidu
Lieu: Messanges
Date d'inscription: 5 Sep 2005
Messages: 231
Site web

Re: QGIS 2.6 : calcul de l'élongation des polygones

Bonjour
Désolé je n'avais pas vu la réponse, en fait, la formule que l'on trouve pour l'indice de morton est :
4S/Pi*L² (http://www.dil.univ-mrs.fr/~mari/Recher … 6_2007.pdf)
où L est la plus grande longueur du polygone
Si on considère cette formule le L est nécessaire (on l'utilise d'ailleurs dans d'autres indices de formes L/l)
Des infos ici
http://georezo.net/forum/viewtopic.php? … 36#p143436 :

"
- Indice de Morton : Imor = Area / Pi*(0,5*L)²
> Indice d'étalement qui tend vers 0 pour une forme plus étirée.
"

La définition " Rapport de la superficie d'une entité, à celle d'un cercle de même périmètre" correspond à l'indice de Miller
"
- Indice de circularité de Miller : Im = (4*Pi*Area)/périmètre²
> Rapport de la superficie d?une entité, à celle d?un cercle de même périmètre
> Vaut 1 si le polygone est un cercle, 0 s?il est de surface nulle
> (surface dégénérée en ligne).
"

Donc il faut savoir de quel indice parle GuZZo

Dernière modification par Ludo (Thu 23 July 2015 14:52)

Hors ligne

 

#7 Thu 23 July 2015 16:02

Paul
Participant assidu
Lieu: Paris
Date d'inscription: 31 Jul 2008
Messages: 158

Re: QGIS 2.6 : calcul de l'élongation des polygones

Merci de ces précisions de vocabulaire !


Paul

Hors ligne

 

Pied de page des forums

Powered by FluxBB