blog

Un mapathon Missing Maps le samedi 16 avril!

Ce samedi 16 avril, je participerai à un mapathon interuniversitaire en Belgique, qui a lieu dans 7 universités du pays. Je serai à l’UNamur. Ci-dessous un texte de présentation de la journée. Au plaisir de vous y voir!

Julien

Où trouver une carte du Swaziland détaillée avec chaque habitation ? 

Imaginez un pays avec peu d’infrastructures, des services publics sous-financés, et … une maladie mortelle. Imaginez encore que vous puissiez contribuer à éradiquer la malaria dans ce pays. Il est possible de le faire seulement en pouvant situer chaque habitation du pays. Comment et où trouver cette information? 

Auparavant, de grosses sommes d’argent auraient été dépensées dans la collecte de telles informations. Des informations qui n’auraient jamais été mises à jour. Mais ce temps est révolu! Des ONGs avec des idées brillantes ont trouvé une communauté avec des idées toutes aussi brillantes. Cette communauté, c’est OpenStreetMap. Démarrée à Londres il y a à peine 10 ans par un type qui a eu l’idée folle de commencer une carte collaborative du monde entier avec un accès libre aux données.  Certains pays comme l’Allemagne ont rapidement été cartographiés par les passionnés de la communauté  OpenStreetMap. D’autres endroits du globe, comme lors du terrible tremblement de terre de Haïti en 2010, ont pu être cartographié extrêmement rapidement grâce à la réactivité de la communauté. 

Afin de coordonner les efforts de cartographie faits lors des urgences humanitaires par des centaines de milliers de volontaires, l’association Humanitarian OpenStreetMap Team (HOT) a été créée. Mais des cartes sont également nécessaires avant que les catastrophes ne surviennent. C’est ici que débute le projet Missing Maps. Le but est de cartographier toutes les zones vulnérables du globe avec autant de détails que nécessaire. C’est un projet en pleine expansion qui s’est propagé jusqu’en Belgique, par le biais du comité belge interuniversitaire de géographie. Le samedi 16 avril, des personnes de 7 universités de chaque région du pays (Flandre, Wallonie, Bruxelles) se rassembleront pour un “mapathon” OpenStreetMap afin de contribuer à créer une carte dont on a besoin pour éradiquer la malaria au Swaziland. 

OpenStreetMap fonctionne un peu comme Wikipedia: des volontaires y contribuent avec ce qu’ils peuvent, quand ils le peuvent. D’habitude, les contributeurs d’OpenStreetMap cartographient leur quartier, leur région, etc.  Lors de ce mapathon, vous n’aurez pas besoin de connaître le Swaziland comme votre poche! Nous cartographierons des habitations et des routes sur base d’images satellites. Plus tard, des équipes locales pourront compléter la carte avec plus d’informations détaillées. Même si vous n’avez jamais fait de la cartographie, en moins d’une demi-heure, vous serez capable de faire apparaître des habitations et des routes sur la carte. Dès que vous cliquerez sur “Sauvez vos modifications”, vos habitations apparaîtront sur des centaines de cartes à travers le monde. Et, en particulier, dans les cartes qu’utilisent des ONGs comme Médecins Sans Frontières pour planifier leurs opérations. 

Venez le samedi 16 avril. Nous ne changerons peut-être pas le monde, mais nous contriburons probablement à changer la vie de nombreuse personnes. Allez-y! Et inscrivez-vous pour cette journée de cartographie à https://www.eventbrite.com/e/national-missing-maps-mapathon-tickets-23149918028

 

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

 

 

GoogleMaps disponible offline

Vu dans le journal Metro cette semaine: Google Maps sera désormais accessible sans connexion internet sur les appareils mobiles.

Et on semble ignorer que, depuis 5 années, une application mobile propose des cartes disponibles offline dans le monde entier, avec des fonctions de navigation assistées, des informations sur les commerces et autres services (heures d’ouvertures, téléphone, site web…). Cette application, c’est OSMAnd, basée bien sûr sur OpenStreetMap. Mais pour le grand public, Google est encore présenté comme à la pointe de l’innovation…

FOSS4G-be: OpenStreetMap pour la cartographie de l’occupation du sol

Ici la présentation que j’ai faite au FOSS4G-be à Bruxelles ce jeudi 29 octobre, sur le potentiel d’OpenStreetMap dans la cartographie des forêts, avec un cas d’étude sur la province de Luxembourg.

Avis aux intéressé(e)s: Je pense qu’OSM a atteint un beau potentiel en termes de recherche et d’applications. Contactez-moi si vous êtes intéressé pour monter des projets de recherche ou développer des applications dans ce cadre! Certaines perspectives/idées à creuser sont données à la fin de la présentation…

Une carte avec Leaflet, OpenLayers 2 et OpenLayers 3

Je reprends la comparaison faite dans cet article de 2013 entre OpenLayers 2 et Leaflet, en y ajoutant OpenLayers 3. Voici donc le même concept de carte simple contenant des icônes et des popups s’affichant lors d’un click sur ces icônes. Toutes les cartes ont le même fond: le rendu standard d’OpenStreetMap. Elles ont aussi toutes la même couche de points, en format GML pour la carte OpenLayers 2 et en format geoJSON pour Leaflet et OpenLayers3. Voilà le résultat, faites CTRL+U sur les cartes en plein écran avec firefox et Chrome pour voir et comparer les codes!

 

Leaflet (en + grand)
OpenLayers2 (en + grand)
OpenLayers3 (en + grand)

Mon avis sur OpenLayers3:

  • Cela fait quelques années que cette librairie est annoncée, mais son usage ne semble pas vraiment décoller. En tout cas, il est difficile de trouver sur le web une documentation simple (en français ou anglais) sur son usage. Les tutoriaux officiels du site sont très pauvres.
  • Je trouve que le code est extrêmement compliqué pour des choses aussi simples qu’afficher un popup ou changer le curseur de la souris sur les icônes!
  • Il est aussi nécessaire de faire appel à certaines librairies extérieures pour des fonctions simples (popups et curseur), comme jQuery et bootstrap.

Bref, pas convaincu pour l’instant! En tout cas, il est clair que pour une carte simple, la meilleure librairie est Leaflet (la plus simple, la plus facile, la plus responsive).

TERR(IT)OIR(E)S

Dans ce blog, des exemples de webmaps et de court tutoriels en cartographie numérique, ainsi que les nouvelles du petit monde de la géomatique en Belgique francophone. En août 2015, je migre un ancien blog fait sur dotclear vers wordpress. Les articles écrit sur l’ancien blog seront progressivement remis dans le nouveau, mais avec leur date de publication originelle.

Julien Minet

Une carte des commerces & services locaux basée sur OpenStreetMap

Il y a moyen de bien s’amuser avec OpenStreetMap…

Cela faisait un petit temps que je voulais faire une carte des services et commerces à partir des données d’OpenStreetMap (OSM). Le but est de fournir une carte à destination des habitants d’un village, d’une commune ou d’une ville, sous une version web, de tous les commerces et services disponibles, avec leur coordonnées (téléphone, site internet) et les heures d’ouvertures. Après quelques soirées et trajets en train, voilà le résultat:

ou ici en plein écran.

Comment c’est fait ?

1) on récupère des données de commerces & services d’OSM avec le site web overpass-turbo.eu

2) on fourre tout ça dans une (belle) carte dynamique construite avec OpenLayers

3) on rajoute une liste à droite construite avec jquery.

Détaillons un peu:

La première étape consiste à récupérer les informations sur les commerces et services à partir d’OSM. Pour cela, nous faisons une requête sur le site overpass-turbo.eu, puis le résultat de la requête est enregistré au format geojson, un format de données géographiques. Les informations reprises seront tous les éléments taggés comme “shop” et “amenity”, qui rassemblent la plupart des commerces et des services dans la terminologie d’OSM. Plusieurs exemples de requêtes pour overpass-turbo existent sur le site, sous l’onglet “Charger”. Mais plusieurs formulations de requêtes sont possibles pour notre application:

1) Requête en fonction du nom de l’endroit

Par exemple, on va chercher tous les éléments en fonction du nom de l’endroit, ce qui pose évidemment problème s’il existe plusieurs endroits avec le même nom. Notez que tous les éléments « shop » et « amenity » sont cherché aussi bien en tant que points (« nodes »), surfaces (« ways ») que relations.


<osm-script output="json" timeout="25">
<!-- fetch area “Habay” to search in -->
<id-query {{nominatimArea:Habay}} into="area"/>
<!-- gather results -->
<union>
<!-- query part for: “shop” -->
<query type="node">
<has-kv k="shop"/>
<area-query from="area"/>
</query>
<query type="way">
<has-kv k="shop"/>
<area-query from="area"/>
</query>
<query type="relation">
<has-kv k="shop"/>
<area-query from="area"/>
</query>
</union>
<!-- print results -->
<print mode="body"/>
<recurse type="down"/>
<print mode="skeleton" order="quadtile"/>
</osm-script>

2) Requête en fonction d’une étendue définie sur la carte

Assez simple, il suffit de se déplacer sur la carte d’overpass-turbo, et de lancer la requête sur l’étendue affichée. Par contre, si on veut se restreindre à une ville et pas une autre, alors que ces deux villes sont imbriquées ou côte-à-côte, la requête donnera des résultats mélangés.


<osm-script output="json" timeout="25">
<!-- gather results -->
<union>
<!-- query part for: “shop” -->
<query type="node">
<has-kv k="shop"/>
<bbox-query {{bbox}}/>
</query>
...
</union>
<!-- print results -->
<print mode="body"/>
<recurse type="down"/>
<print mode="skeleton" order="quadtile"/>
</osm-script>

***

Deuxième étape, afficher ces données dans une carte dynamique. J’ai choisi la librairie OpenLayers, qui reste la plus flexible pour ce genre d’applications. J’ai aussi essayé avec Leaflet, mais certaines limitations demanderait de chercher un peu plus avec cette librairie. Le code source se trouve ici. Rien de bien complexe dans cette carte de base, qui se contente de charger le fichier geojson issu de notre requête sur overpass-turbo, de l’afficher avec des icônes différentes suivant ses propriétés, et de faire ouvrir des popups avec les informations sur ces icônes. Toutes ces informations du popup sont tirées du fichier geojson que nous avons exporté depuis OpenStreetMap. L’exactitude, la précision et la mise à jour de ces informations dépend donc des contributeurs OpenStreetMap du lieu.Une petite manipulation tout de même : si le fichier geojson contient des polygones (représentant le bâtiment du commerce) plutôt que des points, il faut tout d’abord transformer ces polygones en points, ce qui se fait très facilement sous QGIS par exemple, avec la fonction « Polygon Centroid ». Les polygones (bâtiments) sont alors remplacés par des points en conservant toutes les informations de l’objet.

Le fond cartographique choisi est celui d’OpenCycleMap. Pour cette carte, j’ai utilisé la collection d’icônes de mapicons.nicolasmollet.com, qui propose des centaines d’icônes sous différents formes et à la couleur au choix.

***

Dernière étape, créer une liste des éléments affichés sur la carte. Le même fichier geojson sert à afficher les points sur la carte, à générer les popups et à construire la liste à gauche de la carte. Le fichier geojson est lu ici par une fonction de base de la librairie en jquery. Pour chaque élément du fichier geojson qui correspond à une catégorie, le nom du lieu et son icône correspondante (selon sa catégorie) est affichée.

***

Keep It Safe and Simple. La méthodologie pour créer cette carte n’est pas très alambiquée, et même si le code en javascript pourrait certainement être simplifié, il reste compréhensible. Le lien dynamique avec OpenStreetMap (actualisation automatique de la carte en même temps qu’OpenStreetMap) n’a pas été fait, ce qui permet de garder un contrôle sur la carte finale. La carte est plutôt adaptée à un petit territoire (village, quartier), car un grand nombre d’éléments à afficher nécessiterait une gestion de clustering des symboles et une gestion de la liste. Par contre, la méthodologie a une portée globale, c’est-à-dire qu’elle peut être appliquée dans n’importe quel endroit du monde pour autant qu’OpenStreetMap soit suffisamment développé dans la localité. Sinon, c’est l’occasion d’y contribuer !