Utilisation de la console Python pour préparer une carte stockée en local depuis un service WMS (outil de téléchargement de tuile).

Cette étude explique comment préparer des cartes locales à partir de cartes WMS/WFS ou toute carte chargée dans le canevas de cartes de QGIS en téléchargeant des tuiles à l’aide d’un script qui fonctionne avec la console Python. Le script génère également une mosaïque de toutes les tuiles pour une utilisation ultérieure.

Accéder à des cartes raster ou vecteur à travers un service Web Mapping Service (WMS) est très courant et très efficace. Cela a plusieurs avantages dont la sécurité, la centralisation ainsi que des styles de carte flexibles. Par exemple, Google Maps, Yahoo, Bing, MODIS, Landsat, les cartes publiées par la NASA, NRSC (Inde). L’inconvénient/limite de WMS est que le service est fourni par Internet ou via un Intranet. Il est possible de ne pas toujours disposer d’une connexion Internet, particulièrement lors des enquêtes sur le terrain. De plus, WMS est généralement lent par rapport au travail avec des images stockées en local comme le GeoTiff, le jpeg, etc.

Utilisation de QGIS

QGIS fournit un outil pour se connecter/accéder à n’importe quel service WMS. La connexion WMS est basée sur une simple URL et une fois la connexion établie, une carte peut être affichée dans le canevas de carte. Si on sauvegarde la carte dans l’emprise visible depuis QGIS au format Jpeg( Fichier -> Sauvegarder en tant qu’image), cela créé un fichier world contenant les coordonnées géographiques de cette région en particulier; par exemple, échantillon.jpg est l’image et échantillon.jpgw contient les coordonnées. Cela signifie que l’image téléchargée est géoréférencée. Nous pouvons télécharger les tuiles dans un format de grille manuellement pour les utiliser localement. Le téléchargement manuel est possible si la surface couverte est faible ou si une faible résolution d’image est acceptable.

QGIS with WMS tiles

QGIS et les tuiles WMS

Console Python

Un script court a été écrit dans la “Console Python” avec l’aide disponible sur le site web officiel de QGIS dans le Guide de Recettes du Développeur PyQGIS. Le script contient simplement 4 composants:

  1. La coordonnée X,Y de la première tuile (coin supérieur gauche et inférieur droit).
  2. La taille de la tuile à télécharger (ex: 0.001 x 0.001 degrés).
  3. Le nombre de tuiles à télécharger (calculé à partir de l’emprise complete de la carte et la taille des tuiles).
  4. Répertoire de sortie pour les tuiles/fichiers générés

Le script fonctionne avec deux boucles simples dont la première définit l’emprise de la carte dans le canevas QGIS et le nombre de lignes/colonnes. Une fois l’emprise de la carte paramétrée, la carte est chargée dans QGIS. Un délai de 3 secondes (dépendant de la connexion Internet) a été introduit avant d’enregistrer la carte en Jpeg dans le répertoire utilisateur. Une fois que le script est exécuté, toutes les tuiles créées dans le répertoire peuvent être chargées dans QGIS. Il est possible de préparer une dalle unique à partir de Raster > Divers > Fusionner ou Construire un raster virtuel (catalogue). Les deux outils génèrent une dalle unique mais l’outil Fusionner créé une image indépendante des tuiles alors que le raster virtuel génère un lien vers les tuiles individuelles.

Python script and directory where tiles are stored

Script Python et répertoire où les tuiles sont stockées.

La méthode a des limites notamment le fait que des changements sur le serveur ne sont pas reflétés localement. Dans ce cas, l’utilisateur doit relancer le script et générer une nouvelle carte locale. Le deuxième limitation est que la carte locale est une image et elle ne peut pas être utilisée pour des cartes thématiques ou pour une classification d’image. Avec un peu d’effort supplémentaire, quelques cartes d’occupation du sol peuvent être converties en vecteur avec des pertes de données.

Portée

La mosaïque générée est une image même si elle a été téléchargée depuis une carte thématique (7-8 couleurs). En utilisant un outil avancé de reclassification, et l’empilement des bandes, ce raster peut être converti en vecteur polygone. WMS dispose de plusieurs modes de requêtes comme getcapabilities, getmap, getfeatureinfo, etc. En utilisant getfeatureinfo, l’information de l’attribut peut être récupérée pour chaque polygone. Le script peut être converti en extension de manière à ce que toute personne sans compétence de développement sera capable d’utiliser le script.

Conclusion

Les expériences présentées montrent que QGIS peut être utilisé à n’importe quel niveau avancé. Avec des connaissances basiques en développement, on peut écrire un petit script ou une extension pour améliorer la qualité du travail et gagner du temps. Au sein de QGIS, l’accès au dépôt des extensions développées à travers le monde est une grande force. Le Guide de Recette des Développeurs PyQGIS est une source d’information d’intérêt pour écrire un script et la gestion des données raster est assez simple grâce à l’aide des outils GDAL.

Auteurs

Cet article a été rédigé en mai 2014 avec la contribution de Prashant Kadgi, basé à Pune en Inde. Il travaille actuellement en tant que consultant SIG pour APP Consultancy Services. Depuis 2009 il utilise les SIG et la télédétection pour la gestion des ressources naturelles, la forêt, le e-gouvernement, les projets de développement logiciel dans différentes régions de l’Inde et du monde.