Le but de l’opération est pour moi de récupérer une image à un pas de temps régulier afin de l’afficher sur une carte Leaflet.
Nous allons partir du principe que nous ne connaissons pas la projection utilisée pour cette image. Et Leaflet demandant du WGS84 Mercator (EPSG:3857) pour afficher correctement un raster (ImageOverlay), il va falloir référencé notre image, et éventuellement la transformer.
Et le but ultime est bien sûr de pouvoir scripter tout ça pour le faire automatiquement de façon régulière (mais ça on en reparle dans la deuxième partie).
Cet article est illustré avec une image de cumul de précipitations sur 24 heures généré par l’association Infoclimat, mais est reproductible avec tout type d’images ou calques que l’on souhaite projeter sur une carte dynamique comme Leaflet (ou OpenLayers).
Ce premier article est donc consacré à l’utilisation de QGIS pour créer les points de contrôle et faire un premier géoréférencement manuel. Le second article montre comment automatiser ce processus en ligne de commande et en utilisant GDAL.
1. Le géoréférencement, comment ça marche ?
Rien de mieux qu’une petite définition récupérée sur le site portailsig.org. Et un peu plus de détails sur le wiki de Georezo !
Le géoréférencement d’une image fait correspondre à chaque pixel de cette dernière un couple de coordonnées géographiques (en degrés, en mètres…). Ce processus permet d’afficher l’image dans un contexte spatial. Les avantages sont une juxtaposition avec les autres couches de données occupant le même espace géographique, et la mesure sur le PC de coordonnées, distances et surfaces réelles.
On va donc attribuer des coordonnées géographiques à certains points précis de notre image/carte. Ces points précis sont aussi appelés des « points de contrôle ».
2. Pourquoi l’assistance de QGIS ?
Tout simplement afin de pouvoir enregistrer ces fameux points de contrôle très facilement et de manière graphique. Surtout si on a beaucoup de points de contrôle à faire ! On utilisera l’outil de géoréférencement de QGIS, j’ai utilisé pour ma part QGIS en version 2.14.16 et 2.18.13.
J’ai découvert par la même occasion que QGIS donnait la possibilité de générer le script GDAL tout propre une fois le paramétrage indiqué, mais on reviendra là-dessus un peu plus loin.
3. Géoréférencer une image de cumul des précipitations d’Infoclimat
Pour illustrer cet article, nous allons nous servir d’une image publiée par Infoclimat sur leur site.
On peut voir sur cette page un aperçu du cumul des précipitations sur une carte de la France. Le but est donc de récupérer l’image afin de la géoréférencer correctement. Nous allons voir que l’image en question n’est pas transparente, limitant l’intérêt de notre exemple, mais c’est un exemple n’est-ce pas 😉 . Elle a par contre l’avantage d’afficher différentes limites administratives de la France, qui vont nous servir pour créer les points de contrôle.

Histoire d’alimenter les clichés, je rédige une partie de cet article un week-end ou il pleut (encore et toujours ?) quasi qu’en Bretagne 😛
Pour commencer on ouvre QGIS et on charge une couche shape des départements :

Étape importante : en bas à droite de la fenêtre on voit que nous sommes en EPSG:2154 (Lambert 93) puisque la couche de départements l’est aussi. Il faut changer cela pour que notre projet soit en Pseudo Mercator. Pour cela on clique dessus, on sélectionne la projection à la volée (ALV) et ensuite « EPSG:3857 Pseudo Mercator »

Nous sommes donc prêts pour commencer le géoréférencement, dans ce cas on ouvre la fenêtre correspondante qui se situe dans le menu « Raster » -> « Géoreferencer ». Si elle ne s’y trouve pas, il faut l’activer en allant dans le menu « Extension » -> « Installer/gérer les extensions ». Là, vous cherchez l’extension « Géoréférenceur GDAL » et vous l’activez.
Dans la fenêtre qui s’ouvre, nous allons pouvoir ouvrir l’image à géoréférencer à l’aide du bouton « Ouvrir Raster » en haut à gauche de la fenêtre, en l’occurrence l’image du cumul de précipitations (si à son ouverture on vous demande la projection à utiliser, vous sélectionnez de nouveau le Pseudo Mercator) :

Et nous voilà donc prêts à créer des points de contrôle. C’est très simple ! Vous zoomez sur l’image jusqu’au niveau d’une limite administrative particulière, et vous cliquez pour créer le premier point. Là, une fenêtre vous demande de saisir les coordonnées « vraies » de ce point. Bien évidemment on ne le connait pas, alors on clique sur le bouton « Depuis le canevas de la carte », ce qui nous ramène aux limites des départements que nous avons chargées tout à l’heure. Vous cliquez à l’endroit voulu puis la fenêtre du géoréférenceur se rouvre pour afficher les coordonnées que vous venez de sélectionner. Vous cliquez enfin sur « Ok », et voilà votre premier point créer ! Bravo ! Il faut maintenant répéter cette opération plusieurs fois afin de bien quadriller la France.
Pour l’exemple j’en est fait huit, mais on peut en faire bien plus pour améliorer la précision (Remarque : un grand nombre de points n’améliore pas forcément la qualité du résultat, préférez donc des points près de chaque angle de l’image à géoréférencer, et quelques points au centre. N’alignez pas vos points)
Il va maintenant falloir lui préciser quel type de transformation nous voulons, car il en existe plusieurs, qui ont des conséquences différentes sur l’image de base. Tout est expliqué dans la doc de QGIS, mais ce qu’il faut en retenir :
On utilise une transformation affine lorsque l’image à référencer est dans la même projection que l’image de référence (3 points suffisent). On utilise les transformations polynomiales lorsque les déformations sont importantes (cartes napoléoniennes…). Vous avez besoin d’un minimum de quatre points pour une transformation polynomiale de premier ordre, six pour une transformation de second ordre, et dix pour une transformation de troisième ordre.
Source : SIGEA, ou TD5_logiciel_SIG2_V1411.
Note : le « Thin Plate Spline » est aussi une méthode qui m’a généralement donné de bons résultats.
Dans notre cas nous allons donc utiliser une transformation polynomiale de second ordre, et cela se passe dans la fenêtre « Paramètres de transformation » :

On indique aussi le SCR cible : Pseudo Mercator dans notre cas, et enfin le chemin de sortie de notre image géoréférencé.
Une fois cette étape effectuée, on pourra voir s’afficher en bas à droite de la fenêtre du géoréférenceur une « Erreur moyenne ». Il s’agit d’un nombre de pixel. Plus ce chiffre est bas, meilleur sera votre géoréférencement. S’il est supérieur à 10 (et selon les cas), commencez à jeter un oeil dans la table des points de contrôle aux colonnes « dX », « dY » et « Résidu » pour déterminer quel(s) point(s) est trop imprécis, et le rectifier.
Si c’est bon, on va enfin pouvoir effectuer le géoréférencement : pour cela il suffit de cliquer sur le bouton « Débuter le géoréférencement » en haut à gauche, et laisser faire QGIS. Une fois terminé, je vous conseille d’enregistrer vos points de contrôle pour ne pas avoir à les refaire plus tard (« Fichier » -> « Enregistrer les points de contrôles sous » ou Ctrl + S).
Cette première partie se termine, et vous savez maintenant géoéréférencer une image grâce à QGIS. Rien de bien compliqué en soit, mais pour les plus courageux, la suite de cet article traite de l’automatisation de ce traitement en ligne de commande et/ou via un petit script bash.
Note de fin : si vous êtes attentifs, vous aurez remarqué qu’au final cette image n’avait pas besoin d’une transformation, mais simplement d’un référencement…. 😉