Aller au contenu | Aller au menu | Aller à la recherche

Les Tuiles OpenStreetMap dans QGIS

Comment visualiser directement le fond OpenStreetMap dans Qgis

OpenStreetMap met ses tuiles à disposition via le protocole TMS (Tile Map Service : http://en.wikipedia.org/wiki/Tile_M... ). Il est aussi possible d'utiliser ce protocole pour récupérer des tuiles Mapquest ou Google Maps. TMS est un protocole plus simple que le WMS (Web Map Feature), et est beaucoup utilisé dans les applications cartographiques web via les librairies OpenLayers ou Leaflet (qui le gèrent en natif).

En tant que contributeur OpenStreetMap et Qgis, j'ai été assez gêné de ne pas pouvoir utiliser simplement les tuiles OpenStreetMap comme un fond référentiel dans mes projets Qgis. Il existe bien un plugin qui aide l'utilisateur à récupérer puis afficher les tuiles, mais je cherchais une solution plus simple. C'est pourquoi j'ai regardé naturellement la documentation de la librairie Gdal. Depuis la version 1.7.0, Gdal sait utiliser le protocole TMS. La page de documentation http://www.gdal.org/frmt_wms.html est très complète. La seule chose à faire est de copier le texte suivant dans un fichier et de l'enregistrer sur votre ordinateur, par exemple en openstreetmap_mapnik.xml


<GDAL_WMS>
    <Service name="TMS">
        <ServerUrl>http://tile.openstreetmap.org/${z}/${x}/${y}.png</ServerUrl>
    </Service>
    <DataWindow>
        <UpperLeftX>-20037508.34</UpperLeftX>
        <UpperLeftY>20037508.34</UpperLeftY>
        <LowerRightX>20037508.34</LowerRightX>
        <LowerRightY>-20037508.34</LowerRightY>
        <TileLevel>18</TileLevel>
        <TileCountX>1</TileCountX>
        <TileCountY>1</TileCountY>
        <YOrigin>top</YOrigin>
    </DataWindow>
    <Projection>EPSG:900913</Projection>
    <BlockSizeX>256</BlockSizeX>
    <BlockSizeY>256</BlockSizeY>
    <BandsCount>3</BandsCount>
    <Cache />
</GDAL_WMS>

Une fois ce fichier enregistré, il suffit de l'ouvrir avec Qgis comme un simple fichier raster, via le menu Couche->Ajouter une couche raster. Et c'est tout ! Gdal va récupérer les tuiles OSM qui correspondent à votre emprise spatiale et Qgis va afficher l'assemblage.

Si vous avez quelques problèmes pour voir la carte OSM, vous pouvez modifier les propriétés de votre projet. Dans les options du projet, choisissez EPSG:900913 comme projection, et activez la reprojection à la volée. Ensuite, vous pouvez ajouter une de vos couches vecteur que vous connaissez bien, et zoomer dessus. Le fond OSM devrait s'afficher.

Certaines petites choses pour bien en profiter:

  • Les tuiles OSM sont fournies dans la projection Mercator. Il ne faut donc pas oublier d'utiliser cette projection dans votre projet, et de demander la reprojection à la volée de vos couches métier pour s'assurer d'un bon affichage d'OSM
  • Gdal créé un répertoire gdalwmscache à la racine de votre répertoire personnel. Toutes les tuiles téléchargées sont stockées dans ce répertoire, ce qui permet à Gdal de ne pas redemander les tuiles qui ont déjà été récupérées. Ceci est une bonne pratique, car cela permet de ne pas surcharger le serveur OSM sans raison : Gdal met en cache les tuiles. Néanmoins, si vous voulez avoir des tuiles OSM à jour, il vous faudra supprimer le contenu de ce dossier de temps en temps.
  • Comme son nom l'indique, le TMS est un protocole qui donne accès à des tuiles. Les images sont donc produites par le serveur OSM pour des échelles prédéfinies, sur lesquelles nous n'avons aucun levier. Pour éviter de visualiser une carte OSM un peu floue ou pixelisée dans Qgis, il faut utiliser les échelles d'OSM. Sinon Qgis agrandira ou diminuera les images pour respecter votre emprise, et cela peut beaucoup nuire à la lisibilité du fond OSM. Voici ci dessous les échelles approximatives qu'il faut utiliser :
0	591659030
1	295829515
2	147914757
3	73957378
4	36978689
5	18489344
6	9244672
7	4622336
8	2311168
9	1155584
10	577792
11	288896
12	144448
13	72224
14	36112
15	18056
16	9028
17	4514
18	2257

Une liste déroulante contenant des échelles prédéfinies (1/5000, 1/10000, etc.) est maintenant disponible dans Qgis depuis la version 1.8, en bas à droite de la carte. Cela permet de zoomer facilement à une échelle prédéterminée. Ce serait bien de pouvoir définir ses propres échelles pour cette liste, projet par projet. C'est pourquoi j'ai proposé un patch pour ajouter cette fonctionnalité dans Qgis : http://hub.qgis.org/issues/5561 . Cette fonctionnalité a été complétée récemment par Alexander Bruy et sera bientôt disponible dans la branche master de Qgis. La prochaine version de Qgis permettra donc à chacun de définir les échelles utilisées par OpenStreetMap dans le projet Qgis.

Une dernière astuce : dans Qgis, il est possible de définir le facteur de zoom à utiliser lorsqu'on utilise la molette de la souris. Si vous utiliser la valeur 2 (celle par défaut), vous pouvez passer d'une échelle OSM à une autre simplement en utilisant la molette de la souris (sauf problèmes dus aux arrondis de la liste d'échelle donnée ci-dessus)

Vous pouvez maintenant utiliser OpenStreetMap directement dans Qgis comme un fond référentiel ! Je vous souhaite une bonne cartographie libre !

Michael Douchin alias kimaidou