Pitch initial Cette session a été consacrée à l’état de l’art des technologies open source pour la cartographie en matière de tuilage vectoriel. Nos intervenants travaillent chez Makina Corpus, élue entreprise Open Source de l’année au Paris Open Source Summit :

  • Frédéric Bonifas, développeur carto ;
  • Jean-Pierre Oliva, fondateur de Makina Corpus ;
  • Olivia Duval, directrice de Makina Corpus Paris ;
  • Simon Georges, expert Drupal et SEO.

Présentation


Makina Corpus

  • Société de Services en Logiciels Libres (SSLL)
  • Développement d’applications web et mobiles (application métier, front-end, cartographie, CMS, mobile, data)
  • Audits
  • Formation

Tuiles

Ensemble d’images de 256x256 pixels

  • Images précalculées
  • Mise en cache
  • Au déplacement, seules les tuiles manquantes sont chargées

Tuiles raster

  • Format image (PNG, JPG)
  • Rendu des images par le serveur
  • Ressources serveur potentiellement conséquentes (stockage, CPU)
  • Très classique

Tuiles vectorielles

  • Principe de tuiles conservé
  • Données brutes vectorielles plutôt que des images précalculées
  • Propriétés des objets accessibles
  • Format binaire Protobuf
  • Rendu par le client

Par l’exemple

Comment représenter un GeoJSON de 400 Mo dans un navigateur web et interagir avec celui-ci ?

Les bâtiments de Paris par exemple


Caractéristiques et avantages des tuiles vectorielles


Changement de style à la volée

  • Un même jeu de tuiles pour différents contextes
  • Affichage des différentes propriétés d’un objet
  • N’importe quelle grandeur présente dans les données peut être utilisée


Orientation et rotation de la caméra

  • Rendu en 3D
  • Texte toujours orienté dans le sens de lecture


Requêtes instantanées sur les objets

  • Pas besoin d’un appel à une API pour obtenir les propriétés des objets
  • Accès à la géométrie et aux propriétés
  • Opérations géométriques sur les objets (ex : cluster, Voronoï etc.)


Autres avantages

  • Poids réduit
  • Rendu amélioré pour les écrans haute-définition
  • La carte peut être rendue à n’importe quelle échelle

Tuiles vectorielles - exemples


Tuiles vectorielles - exemples


Tuiles vectorielles - exemples


Tuiles vectorielles - exemples


Solutions techniques


Générer des tuiles vectorielles

  • Utilisation de tuiles vectorielles existantes
  • Serveur : t-rex
  • Depuis un GeoJSON : Tippecanoe
  • Depuis PostGIS : Function ST_AsMVT

t-rex

  • Servir facilement des tuiles vectorielles depuis une base PostGIS
  • Création des tuiles et serveur intégré
  • Paramétrage fin des couches et des niveaux de zoom

t-rex : Création de la base PostGIS

dbname=bbl
dbuser=gisuser
dbpass=corpus
sudo -u postgres -s -- psql -c "CREATE USER ${dbuser} WITH PASSWORD '${dbpassword}';"
sudo -u postgres -s -- psql -c "CREATE DATABASE ${dbname} OWNER ${dbuser};"
sudo -u postgres -s -- psql -d ${dbname} -c "CREATE EXTENSION postgis;"

Ou avec PgAdmin


t-rex : Importer des données OSM

  • Récupérer des données OSM
  • Installer osm2pgsql
  • sudo -u postgres -s -- osm2pgsql -d ${dbname} data.osm

t-rex : Générer des tuiles vectorielles

  • Installer t-rex
  • Générer automatiquement un fichier de conf:
    t_rex genconfig --dbconn postgresql://gisuser:corpus@localhost/bbl
    
  • Servir les tuiles:
    t_rex serve --config trexconfig.toml
    

query_limit et geometry_type


Tippecanoe

  • Conserver l’aspect des données quel que soit le niveau de zoom
  • Gestion de gros jeux de données
  • Nombreuses stratégies de simplification et aggrégation

Tippecanoe : Générer les tuiles

  • Conversion du GeoJSON en tuiles vectorielles :
    tippecanoe
    -o volumesbatisparis2011.mbtiles
    --maximum-zoom=g
    --drop-smallest-as-needed
    --read-parallel
    --detect-shared-borders
    volumesbatisparis2011.geojson
    

→ Fichier Mbtiles


Tippecanoe : Servir les tuiles

  • Pas de serveur intégré à Tippecanoe, on utilise tileserver-gl par exemple
docker run --rm -it -v $(pwd):/data -p 8080:80 klokantech/tileserver-gl

Visualiser des tuiles vectorielles

Bibliothèques JavaScript


Leaflet

  • Créé en 2011 par Vladimir Agafonkin, travaillant à l’époque chez Cloudmade
  • Porté par Mapbox et par la communauté maintenant
  • Volonté de fournir une bibliothèque OpenSource légère, performante et simple d’utilisation
  • Très nombreux plugins
  • Pour les tuiles vectorielles : mapbox-gl-leaflet et Leaflet.VectorGrid

OpenLayers

  • Bibliothèque historique
  • Gère nativement de nombreux formats (tuiles vectorielles…)
  • Nombreuses méthodes natives

Mapbox GL JS

  • Bibliothèque open source, très largement maintenue principalement par Mapbox
  • Le bon choix pour les tuiles vectorielles
  • Encore peu de communautés et de plugins
  • Problèmes de performance dans Firefox

Tuiles et rendu


Autres outils


Difficultés avec les tuiles vectorielles

  • Quelle bibliothèque JS choisir ?
  • Gestion de gros volumes de données (tuning PostGIS)
  • Choix de simplification aux petites échelles
  • Évolution rapide des outils

Discussion et questions


Pour aller plus loin