Qu’est-ce que c’est que l’indice de forme ?

Ce post ouvre une mini-série de posts sur le calcul et l’application de différents indices de forme.

Ce post ouvre une mini-série de posts sur le calcul et l’application de différents indices de forme.

Suite à une discussion avec mon collègue urbaniste, Paul Barry, j’ai décidé qu’il est temps de lever un coin du voile sur le sujet des indices de forme.

Qu’est-ce que c’est que l’indice de forme ?
Soyons brefs. L’idée du concept est cachée dans son nom. Pour caractériser un objet, on calcule un indice sur la base de sa forme.
Cela peut être utile dans plusieurs domaines très variés, par exemple dans l’urbanisme, notamment pour identifier les parcelles les plus favorables à la construction. Un petit exemple ci-dessous.
Sur la carte, vous voyez des parcelles pour lesquelles l’indice « Diamètre/étalement » a été appliqué. Les parcelles ayant une forme plus régulière s’affichent en bleu, tandis que les parcelles les plus irrégulières sont en rouge.

Figure 1 : Indices de forme de parcelles.
Figure 1 : Indices de forme de parcelles.

Cette approche simpliste nous permet de clustériser toutes les parcelles d’un secteur d’intérêt, ce qui facilite la sélection des entités les plus attrayantes pour une nouvelle construction, par exemple. Regardons un peu plus en détail ce qui se passe en arrière-plan.
L’indice que j’appelle « Diamètre/Étalement » correspond au ratio entre le diamètre du plus grand cercle inscrit dans le polygone et l’étalement du polygone (c’est-à-dire la longueur du côté maximal de l’emprise). Cet indice varie entre 0 et 1. Plus la forme est régulière, plus l’indice se rapproche de 1.
Conceptuellement, tout est simple. Mais comment calculer le diamètre du plus grand cercle inscrit et l’étalement du polygone ?
Tout cela se fait facilement dans QGIS dans la calculatrice des champs grâce à la formule suivante :

(distance(closest_point(boundary($geometry), pole_of_inaccessibility( $geometry, 0.1)), pole_of_inaccessibility( $geometry, 0.1))*2)/max(bounds_height( $geometry ),bounds_width( $geometry ))

Il vous suffit de créer un champ numérique décimal et d’insérer la formule. Les valeurs de l’indice pour chaque entité de votre couche seront stockées dans la table attributaire.

Figure 2 : Calculatrice des champs.
Figure 2 : Calculatrice des champs.

Conclusion

Dans la suite du sujet, nous aborderons d’autres indices en les comparant entre eux pour bien comprendre quel indice utiliser dans tel ou tel cas.
En guise de point culminant du bloc, je vous présenterai un plugin QGIS (en production) capable d’automatiser les calculs qui seront évoqués par la suite.
Merci pour votre attention !