Un algorithme pour fusionner des polygones planaires jointifs en PHP

02-08-2011

Le titre peut paraître un peu alambiqué : il s’agit tout simplement de pouvoir fusionner deux polygones 2D, par exemple pour assembler les communes d’un fond de carte selon divers regroupements intercommunaux, côté serveur en langage PHP.

A l’origine, deux communes :
Polygones d'origine

Après application :
Polygones fusionnés

Étonnamment, je n’ai pas réussi à trouver en clair ce type d’algorithme pourtant d’usage très courant, on ne le trouve que perdu dans de grosses bibliothèques de fonctions comme la Java Topology Suite. J’ai pu cependant m’inspirer des concepts évoqués sur ce sujet de StackOverflow.

Le code source PHP objet de l’algorithme est disponible dans le fichier suivant : polygones.php.

Il est certainement perfectible, mais il fonctionne ! (Je suis preneur de toute remarque pour l’optimisation).

Mise à jour (12 août 2011) : ajout d’une fonction plus généralisée dans la classe, union_multi(), qui permet de fusionner un groupe de polygones avec le polygone courant (au lieu de 2 avec la fonction union()).

Comments:

  • Alain
    déc. 13, 11:09

    je suis moi même à la recherche de ce type d’algorithme. Toutefois, le lien vers polygones.php ne marche pas

  • L. Jégou
    déc. 13, 11:56

    Bonjour, en effet le fichier n’était plus disponible, j’ai réactivé le lien. L’autre solution en PHP est d’utiliser les bindings de la bibliothèque de fonctions GEOS (mais c’est bien plus complexe).

  • Alain
    déc. 17, 10:49

    merci ;)

Commenter ce texte :