OpenArdenneMap hiver 22-23

Note: there’s an English version of this there.

Depuis fin 2019, le style cartographique OpenArdenneMap est mis à jour suivant un cycle semestriel de livraison! OpenArdenneMap est un style cartographique open-source pour des cartes topographiques sur base des données OpenStreetMap. La livraison “hiver 2022-23” vient de sortir.

Cet hiver, OpenArdenneMap passe à QGIS

OpenArdenneMap a été initialement développé comme un style cartographique avec l’importateur imposm et un style cartoCSS dérivé de OSMBright. Plus tard, l’importateur osm2pgsql a été utilisé à la place de l’importateur imposm. A partir de cette livraison, le style OpenArdenneMap est également disponible dans QGIS, en utilisant le même importateur osm2pgsql pour construire les couches de la carte.

Bien qu’il nécessite toujours une base de données PostGIS, le style QGIS est beaucoup plus simple à utiliser pour composer des cartes à différentes échelles que le style Mapnik/cartoCSS. Il est également beaucoup plus simple à mettre en place.

Les outils utilisés pour réaliser des cartes ont une certaine influence sur le style cartographique lui-même. Le but de ce support QGIS est de reproduire le même rendu que les cartes produites avec le style Mapnik/cartoCSS, mais les 2 solutions ne sont pas 100% équivalentes.

extract of OpenArdenneMap map made with Mapnik

Un extrait OAM avec Mapnik

extract of OpenArdenneMap map made with Qgis

Un extrait OAM avec QGIS

Voici quelques observations clés lors du passage de ce style de Mapnik/cartoCSS à QGIS.

Des règles beaucoup plus simples pour la mise à l’échelle dans QGIS

QGIS supporte l’utilisation d’unités géographiques pour définir la taille des symboles (mètres à l’échelle, unités cartographiques), alors que Mapnik/cartoCSS, à ma connaissance, ne traite que des unités en pixels. Cela signifie que, dans QGIS, vous pouvez définir une taille qui sera fonction de l’échelle de la carte. Ceci est vraiment utile pour les cartes à très haute échelle (c’est-à-dire > 1:10000), où certains éléments tels que la largeur des routes peuvent prendre leur taille “réelle” sur la carte. Pour obtenir le même effet dans Mapnik, nous devons définir des largeurs différentes pour chaque niveau de zoom.

Utilisation des variables QGIS

Un avantage clé de l’utilisation de Mapnik et de cartoCSS est qu’il est possible de définir des variables qui sont utilisées tout au long du projet, typiquement pour des variables de taille et les couleurs. Heureusement, il y a aussi moyen de définir des variables dans un projet QGIS (dans Projet > Propriétés > Variables) et les utiliser dans les définitions de style.

Utiliser des tables PostGIS filtrées par rapport aux couches SQL

Les mêmes couches utilisées dans Mapnik ont été utilisées comme couches QGIS. Souvent, ces couches ne sont pas seulement des filtres appliqués à une table “planet_osm_points|lines|polygones” mais elles effectuent une transformation des données. Par exemple, la couche pour les libellés des plans d’eau est la suivante :

SELECT way, waterway AS type, replace(name, 'Ruisseau', 'Rau') AS name
FROM planet_osm_line
WHERE waterway IN ('canal', 'river', 'stream') AND name IS NOT NULL
UNION ALL
SELECT
    ST_LineMerge(ST_ApproximateMedialAxis(ST_SimplifyPreserveTopology(ST_MakePolygon(ST_ExteriorRing(way)), 50))) AS chemin,
    eau AS type,
    replace(replace(name, 'Etang', 'Étg'), 'Étang', 'Étg') AS name
FROM planet_osm_polygon
WHERE water IN ('pond', 'lake', 'basin', 'reservoir') AND name IS NOT NULL AND way_area > 10000

qui combine les lignes de planet_osm_line avec des lignes créées à partir de planet_osm_polygon en utilisant une suite de fonctions PostGIS (ST_ApproximateMedialAxis, etc.).

Ces requêtes PostGIS sont simplement définies comme des couches dans le gestionnaire de base de données QGIS et ensuite ajoutées à la carte.

Cependant, pour certains problèmes de performances, il semble plus facile de filtrer directement à partir d’une couche PostGIS de la BD plutôt que de définir une nouvelle couche SQL avec le gestionnaire de BD. Dans la mesure du possible, les couches du projet QGIS sont donc des tables PostGIS complètes qui sont juste filtrées pour les éléments requis.

Problèmes restants

Le travail de portage du style Mapnik vers QGIS n’est pas tout à fait terminé, il reste quelques problèmes non résolus et/ou limitations de QGIS par rapport à Mapnik.

Par exemple, je n’ai pas trouvé comment éviter le chevauchement/la répétition de symboles ou d’étiquettes proches. Il s’agit d’une fonctionnalité essentielle de Mapnik, et d’un problème si commun mais aussi si difficile en cartographie : comment empêcher les symboles de se chevaucher ou de se répéter à courte distance, que ce soit dans la même couche ou dans des couches différentes ? La même chose s’applique aux labels. Un exemple est l’affichage multiple de symboles de table de pic-nic, souvent groupées dans un parc, et qui apparaissent côte à côte dans la carte.

Pour conclure

Ce travail de passage de Mapnik à QGIS n’est pas terminé. J’ignore encore quel logiciel sera privilégié à l’avenir pour OpenArdenneMap. A noter qu’une grande partie du travail cartographique est appliqué directement aux données via les requêtes PostGIS, et est donc commun aux 2 solutions. Automatiser ce travail cartographique sur base des données OSM (généralisation automatique, déplacement, …) est un domaine encore peu exploré aujourd’hui.

Connaitre la taille des arbres des forêts wallonnes avec ForEstimator

Suite à cet article paru dans Forêt.Nature, voici un test du plugin QGIS ForEstimator développé par Gembloux AgroBioTech dans la commune de Habay. Ce plugin a pour but de donner la hauteur des peuplements forestiers en Wallonie sur base d’un relevé LIDAR effectué sur l’ensemble du territoire wallon ces dernières années. J’ai testé ce plugin sur la commune de Habay.

0) Installer le plugin sous Windows ou Ubuntu.

Le seul lien de téléchargement du plugin est ici: c’est un fichier .exe, qui n’est donc pas le plugin. Pour Windows, télécharger et exécuter ce fichier.
Pour Ubuntu, je l’ai d’abord installé sous un ordinateur Windows avec QGIS installé. Pour l’utiliser sur mon Ubuntu adoré, j’ai récupéré le dossier de plugin était installé sous Windows sous
C://Users/TonNom/.qgis2/python/plugins/ForEstimator
 et je l’ai copié simplement dans le répertoire des données d’applications de QGIS sous ubuntu qui se trouve sous
 home/.qgis2/python/plugins/

1) Récupérer les imites de la commune d’Habay de la base de données OpenStreetMap avec overpass-turbo:

Pour me focaliser sur la commune de Habay, j’ai téléchargé la limite communale à partir des données d’OpenStreetMap avec une requête sur overpass-turbo.eu:
[out:json][timeout:25];
 (
 relation["type"="boundary"]["name"="Habay"];
 );
 out body;
 >;
 out skel qt;
 Changer le nom de la commune à la place de “Habay” pour essayer une autre commune. J’enregistre le résultat de cette requête sous format geojson. Ensuite j’importe ce fichier geojson dans QGIS. Pour l’utilisation de ForEstimator, je convertis ce fichier geojson en format shapefile (SHP), en sélectionnant bien le système de coordonnées propre à la Belgique, le Lambert Belge 1972 (EPSG:31370).

2) Création d’une grille régulière sur la commune

Une limitation du plugin ForEstimator, c’est qu’il faut avoir un fichier des limites de parcelles où l’on veut connaître la hauteur dominante des arbres. J’ai donc créé une grille régulière sur l’espace de la commune. Pour cela, j’utilise l’outil “Vector Grid” de QGIS: Menu Vector > Research tools > Vector grid …
On choisit l’étendue de la grille en sélectionnant la couche de la commune d’Habay. La résolution de la grille (taille des “pixels”) se choisit avec les paramètres X et Y. Je choisis de les fixer à 100 m, ce qui donne des parcelles de 1 ha, ce qui n’est pas très loin de la taille moyenne de parcelles forestières.
La grille est ensuite clippée sur les frontières de la commune pour se focaliser sur la commune. (Vector > Geoprocessing tools > Clip).

3) ForEstimator

 Enfin, il suffit de faire tourner ForEstimator, qui se trouve dans le menu “Plugins”. On ouvre le plugin, on sélectionne la couche de la grille régulière créée et c’est parti! Je n’ai pas utilisé les autres options du plugin (choix d’espèces et année de plantation) qui sont expliquées dans l’article.
Voilà le résultat sous format de screenshot QGIS, avec une symbologie qui montre la hauteur dominante du peuplement en fonction de l’intensité de vert:
Habay_1ha_ForEstimator
Et le peuplement le plus grand de la commune d’Habay est… un peuplement d’épicéa, le long de la route Anlier-Habay (au milieu de l’image, un peu à droite), avec une hauteur dominante de 42m, ce qui parait un peu exagéré.

Manuel / tutoriel QGIS récent en français

Je ne peux que conseiller ce manuel QGIS fait par mon collègue à ULg-Arlon Antoine Denis: “Initiation à QGIS – Travaux pratiques sur les Systèmes d’Information Géographique – SIG”, disponible en accès libre sur orbi: http://orbi.ulg.ac.be/handle/2268/190559 (pdf et données d’exercices à télécharger en bas de la page).

173 pages d’exercices d’introduction aux SIG avec la dernière version de QGIS en ce début 2016: QGIS 2.12 “Lyon”. A conseiller aux étudiants qui souhaiterait commencer avec QGIS et aux formateurs!

Julien

 

 

Des WMS avec le nouveau géoportail wallon

Début février 2013, la région wallonne a sorti son nouveau géoportail. Il était temps, vu que les divers services étaient éparpillés sur différent viewers et qu’il n’était pas facile de s’y retrouver. Le nouveau géoportail est d’ailleurs en pleine évolution depuis février et on peut s’inscrire à une newsletter pour être au courant des deniers services.

Les données seront maintenant centralisées et surtout distribuées au format INSPIRE, respectant les standards de l’OGC (Open Geospatial Consortium). Il y a pour l’instant 1 seul WMS disponible: les orthophotoplans 2009-2010. On trouve les accès de ce WMS sur la page d’accueil du géoportail sous l’onglet “Géoservices”. Voici 3 manières de visualiser ce WMS avec des solutions libres:

1) Avec un navigateur Internet

Accès direct par le navigateur, qui est en fait une requête MapServer:

http://geoservices.wallonie.be/arcgis/services/IMAGERIE/ORTHO_2009_2010/MapServer/WMSServer?request=GetMap&service=WMS&version=1.3.0&bbox=38841,18084,300030,170095&width=400&height=300&styles=&crs=EPSG:31370&format=image/png&layers=0&mode=map

Décomposons la requête. D’abord il y a la base:

http://geoservices.wallonie.be/arcgis/services/IMAGERIE/ORTHO_2009_2010/MapServer/WMSServer?

Puis des paramètres:

  • request=GetMap& : Càd qu’on veut montrer la donnée sous forme de carte
  • service=WMS& : fournie en WMS
  • version=1.3.0& : version du WMS
  • bbox=38841,18084,300030,170095& : l’étendue (xmin, ymin, xmax, ymax) en Lambert Belge 1972 de la requête. Cela doit être contenu dans l’étendue de la Wallonie dans ce système de coordonnées. Les chiffres ici contiennent l’ensemble du territoire wallon.
  • width=400& : la largeur de l’image
  • height=300& : la hauteur de l’image
  • styles=& : paramètre nécessaire mais vide
  • crs=EPSG:31370& : le système de coordonnées de la couche.
  • format=image/png& : le format de fichier demandé. D’autres format sont possibles (JPEG, etc.)
  • layers=0& : le nom de la couche qui est « 0 »
  • mode=map : déclare que la donnée doit être rendue sous forme d’une carte

Avec OpenLayers

Avec l’ajout de la couche comme suit: var Orthophotos= new OpenLayers.Layer.WMS("Orthophotos","http://geoservices.wallonie.be/arcgis/services/IMAGERIE/ORTHO_2009_2010/MapServer/WMSServer?",{layers: '0'},{projection:projLB});

 

Et avec OpenLayers 3

Notez le meilleur rendu lorsqu’on zoome/dézomme avec OpenLayers 3 par rapport à OpenLayers 2: le chargement des tuiles apparait plus fluide.

var orthophotos = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://geoservices.wallonie.be/arcgis/services/IMAGERIE/ORTHO_2009_2010/MapServer/WMSServer?',
params: {LAYERS: '0'}
})
});
map.addLayer(orthophotos);

Avec QGIS

1. Cliquer sur l’icône « Ajouter une couche WMS »

Cliquer sur l’icône « Ajouter une couche WMS »

qgis1

2. Dans la boite de dialogue qui apparait, cliquer sur « Nouveau »

3. Introduire un nom de votre choix dans « Nom », et l’adresse suivante dans « URL » : http://geoservices.wallonie.be/arcgis/services/IMAGERIE/ORTHO_2009_2010/MapServer/WMSServer?request=GetCapabilities&service=WMS. Ignorer les demandes de Nom d’utilisateur et de mot de passe, il n’y en a pas besoin pour le WMS. Cliquer sur OK pour sauvegarder dans QGIS la configuration du WMS.

qgis2

4. Cliquer ensuite sur « Connexion » pour se connecter au WMS. La couche apparait dans la boite de dialogue. Il n’y qu’une seule couche avec l’ID « 0 ». Cliquer sur cette couche dans la boite de dialogue. Laisser l’encodage en PNG (au choix) mais il faut absolument changer le système de projection qui est resté au WGS 84 par défaut et qui doit être modifié en Lambert Belge 1972, avec le code EPSG : 31370.

qgis3

5. On peut enfin ajouter la couche en cliquant sur « Ajouter » en bas à droite. Et voilà !

Le plugin OpenLayers dans QGIS

Un des avantages des logiciels open-source sur les logiciels propriétaires, c’est la possibilité de personnaliser son programme avec des plugins développés par la communauté, comme par ex. avec Firefox et ses nombreux plugins. Pour QGIS, le projet opensource le plus avancé en matière de SIG, un plugin à retenir est le plugin OpenLayers, qui permet d’afficher les données de plusieurs sources de données propriétaires et libres (GoogleMaps, BingMaps, OpenStreetMap,…) dans QGIS.

Une capture d’écran ci-dessous avec BingMaps comme exemple:

OpenLayerspluginQGIS

Pour installer ce plugin, il faut d’abord activer les plugins 3rd party. Voilà la marche à suivre pour QGIS 1.7, en version anglaise:

  1. Aller dans “Plugins”>”Fetch Python plugins…”
  2. Dans la boîte de dialogue qui s’affiche, aller dans le 2ème onglet: “Repositories” et cliquer sur “Add 3rd party repositories”
  3. Retourner dans le premier onglet “plugins” et taper OpenLayers dans la barre de recherche
  4. Cliquer sur OpenLayers plugin pour l’installer

Ensuite, pour afficher les couches comme GoogleMaps, BingMaps et OpenStreetMap, aller dans “Plugins” et “OpenLayers plugin” devrait apparaitre en bas, laissant apparaître une bonne dizaine de couches à afficher (Yahoo maps étant proposés mais ne fonctionnant plus…)

Enfin, si le plugin est introuvable, et pour voir son code-source, on peut toujours le trouver sous http://build.sourcepole.ch/qgis/plugins.xml

A ma connaissance, impossible d’afficher ces couches GoogleMaps, BingMaps et OpenStreetMap aussi simplement dans ArcGIS!