Afficher des Polygones à la géométrie encodée sur Leaflet

Comme promis dans un article précédent et avec du retard pour ne pas changer, voici une façon d’afficher sur Leaflet des géométries encodées selon l’algorithme de Google modifié pour y stocker des polygones complexes (multi-polygone ou à trou).

Ici, la géométrie des polygones est stocké dans une base Mysql de deux manières

  • de type « geometry » pour permettre de faire des sélections spatiales
  • la géométrie encodée (en « text ») qui est envoyé côté client et permet de « dessiner » les objets dans Leaflet.

Pour transformer cette géométrie encodée, j’ai modifié le plugin de Jan Pieter Waagmeester afin de prendre en compte les polygones complexes.

Cette extension est disponible ici

Elle s’utilise donc ainsi :

L.Polygon.fromEncodedGeom(_string_polygon_encoded, percision);

Pour l’exemple, voici une carte représentant les données la densité de population par région/département/commune. Les données proviennent du GEOFLA de l’IGN et l’application fortement inspiré d’un tutoriel du site Leaflet

A chaque zoom ou déplacement de la carte, de nouvelles données sont chargées par rapport à l’emprise visible.

ExempleLe code source et les données sources sont disponibles ici

 

2 pensées sur “Afficher des Polygones à la géométrie encodée sur Leaflet

  • 7 octobre 2018 à 23 h 39 min
    Permalink

    Bonjour
    Super intéressant votre tuto. J’ai repris votre tuto en se basant sur postgres.
    Seulement j’ai un problème avec « st_intersects(geom,st_GeomFromText(:wktbbox)) » .
    Si je l’enlève la carte marche mais au niveau communale, le temps de chargement est beaucoup trop long.
    Avez vous une idée pour adapter cette fonction?
    Merci

    Répondre
  • 7 octobre 2018 à 23 h 47 min
    Permalink

    C’est résolu avec « WHERE st_intersects(geom,st_GeomFromText(:wktbbox, 4326)) »
    Merci

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *