Skip to content

[TileMill] Colorer et ajouter un fichier « Raster »

Aujourd’hui, je m’intéresse à l’utilisation de données « raster » géoréférencées dans TileMill, le logiciel SIG/Carto de MapBox, dont je vous ai déjà parlé sur ce blog. Y insérer des couches SIG vectorielles dans un projet est une chose assez aisée. Ajouter un raster est tout aussi aisé mais fait un peu plus peur. Et si votre raster n’est pas coloré de base, cela fait encore plus peur. Cet article vous décrit les différentes solutions qui s’offrent à vous, en utilisant principalement les deux outils que sont GDAL et TileMill.

one_band_rasterMon « one band raster », vu par Photoshop CS6

Donner de la couleur à votre raster

Si votre raster est né d’un traitement informatique, il est possible qu’il s’agisse d’un « one band raster » et qu’il apparaisse tout gris ou tout noir dans vos logiciels. Si vous désirez colorer votre raster une bonne fois pour toute, vous pouvez le faire avec l’outil gratuit GDAL (à récupérer ici) et la ligne de commande suivante :

gdaldem color-relief path/to/raster.tif path/to/couleurs.txt path/to/raster_avec_couleurs.tif -alpha

Le fichier couleurs.txt sert à décrire les associations « valeur-couleur », aussi appelées « stops ». Les niveaux de rouge, de vert et de bleu se comprennent de 0 à 255 (notation RVB classique), tout comme le niveau de transparence (le dernier chiffre de chaque ligne). Dans ce dernier cas, on va de 0 pour complètement transparent (invisible) à 255 pour complètement opaque. Bref, le fichier final s’écrit comme cela :

valeur rouge vert bleu transparence
valeur rouge vert bleu transparence
valeur rouge vert bleu transparence
valeur rouge vert bleu transparence
...

Souvent, on met une première ligne « 0 0 0 0 0 » qui va rendre invisibles tous les pixels ayant la valeur 0, les « no-data » (ceux pour lesquels aucune donnée n’est associée). A moins que la valeur 0 ait du sens dans votre cas, bien entendu…

Bon, si vous ne voulez pas toucher à votre « one band raster », il sera bientôt possible de le colorer « à la volée », depuis TileMill, via la syntaxe CartoCSS (fichier .mss). Cette fonctionnalité n’est disponible que dans les versions « développement » de TileMill pour le moment. Cela étant dit, en voici la syntaxe :

raster-colorizer-default-mode: linear;
raster-colorizer-default-color: transparent;
raster-colorizer-stops: 
stop(0,#47443e)
stop(50, #77654a)
stop(100, rgb(85,107,50))
stop(200, rgb(187, 187, 120))
stop(255, rgb(217,222,170));

Comme vous le voyez, on retrouve la notion de « stops » décrite plus haut. Par contre, là, on pourra aussi décrire les couleurs désirées en notation hexadécimale. Pour plus d’informations sur cette fonctionnalité, vous pouvez consulter le récent article publié sur le blog de MapBox à ce sujet.

Une fois votre raster coloré (si besoin était), il vous faut maintenant l’insérer dans l’un de vos projets TileMill…

color_rasterEn jouant avec le nombre de « stops », on arrive à des résultats et des dégradés bien différents

Ajouter votre raster dans votre projet TileMill

Pour ajouter votre raster dans un projet, rien de bien compliqué : il n’y a que deux subtilités. Tout d’abord, il faut que l’extension de votre fichier ne soit pas cachée, ce qui est souvent le cas pour les fichiers .tif. Deuxièmement, comme pour les données vecteur, si votre raster est projeté dans un autre système que le WGS 84 (EPSG:4326) ou que le Google « 900913 » Spherical Mercator (EPSG:3785), vous devrez :

• Soit, avant de l’ajouter, reprojeter en dur votre raster, avec GDAL, par exemple. La ligne de commande suivante permet de passer du RGF93/Lambert 93 au Google Spherical Mercator :

gdalwarp -s_srs EPSG:2154 -t_srs EPSG:3785 -r bilinear path/to/raster_initial.tif path/to/raster_reprojete.tif

• Soit, lors de son ajout, indiquer à TileMill la projection de votre raster (en utilisant la notation « Proj4″) dans le champ « SRS » (en sélectionnant « Custom » dans la liste déroulante qui précède ce champ). Cette solution est plus pratique, mais il peut y avoir des défauts d’affichage car la reprojection est faite à la volée, pour pas dire à l’arrache. Pour le RGF93/Lambert 93 (ESPG:2154), le SRS à indiquer est :

+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

Et si vous ne connaissez pas le SRS de votre projection par cœur (quel scandale !), vous pourrez toujours consulter ce site très pratique : spatialreference.org.

L’option « Autodetect » présente dans la liste déroulante correspondante, assez efficace dans le cas de données vectorielles, se montre capricieuse dans le cas de fichiers rasters. C’est pourquoi je préconise cette manipulation (reprojection ou renseignement du SRS en toutes lettres).

add_raster

Dans cette boîte de dialogue (et dans l’onglet File précisément), vous allez devoir remplir certaines informations :
– ID : c’est l’identifiant unique de votre couche, qui va vous permettre de styler votre couche avec la syntaxe « #votre_id{…} ». Deux couches ne peuvent pas avoir le même « ID » !
– Class : c’est un identifiant, partagé avec d’autres couches ou non, qui permet donc de style plusieurs couches en même temps avec la syntaxe « .votre_classe{…} ». Quand j’ai plusieurs rasters, j’aime bien leur mettre une classe commune, comme « rasters » par exemple.
– Datasource : c’est le chemin vers votre fichier ou votre couche SIG (rassurez-vous, vous avez un bouton « Parcourir »).
– SRS : c’est la projection de votre fichier/couche (voir ce que l’on a dit à ce sujet juste avant plus haut), via la liste déroulante ou le champ texte.
– Advanced : ce sont des paramètres particuliers à éventuellement donner à la couche SIG à charger (pas besoin de cela ici)

Il ne vous reste plus qu’à cliquer sur « Save and Style » : votre fichier raster apparaitra dans la liste des couches du projet et quelques lignes auront été ajoutées dans le fichier .mss à son sujet. Après cela, vous pouvez ajouter d’autres couches et styler ces dernières selon vos envies, afin d’arriver à la carte finale souhaitée.

Récapitulatif

Pour ma part, j’ai retravaillé le raster produit pour cet article. Je vous redonne la liste des manipulations effectuées du raster de base à la publication web de la carte :

– Coloration du raster avec GDAL (en décrivant 9 stops dans mon fichier .txt, pour avoir un beau dégradé)
– Création d’un projet dans TileMill
– Ajout du raster dans ce projet (en indiquant son SRS (RGF93/Lambert 93) plutôt qu’en le reprojetant)
– Ajout de la couche SIG des régions françaises et mise en place d’étiquettes (labels)
– Export en choisissant le mode « Upload » (génération de tuiles, hébergées sur mon compte MapBox
– Création d’une carte (Map) dans MapBox et ajout du lot de tuiles tout juste générées/uploadées
– Publication (Publish) de cette carte en choisissant le mode « iFrame » pour insertion ci-dessous :

Le fichier CartoCSS (.mss) de mon projet TileMill :

#regions
{
	polygon-opacity:0;
	::outlines
	{
		line-color:black;
		line-width:0.3;
		line-join:round;
	}
	text-name: "[NOM_REGION]";
	text-size:10;
	text-face-name: "Tahoma Regular";
	text-fill:black;
}

.rasters
{
	raster-opacity:0.7;
	raster-scaling:bilinear;
}

Le fichier de stops (.txt) utilisé avec GDAL :

0.00 0 0 0 0
1.00 0 43 255 255
1.15 0 125 255 255
1.30 6 255 248 255
1.45 161 255 93 255
1.60 229 255 25 255
1.75 255 200 0 255
1.85 255 122 0 255
2.00 255 21 0 255

Les valeurs de mon « one band raster » sont comprises entre 1.00 et 2.00

Pas encore de commentaire

Rédiger votre commentaire

Vous pouvez utiliser un peu d'HTML dans votre commentaire.
Votre adresse e-mail ne sera pas publiée.

S'inscrire au flux RSS des commentaires de ce billet