25 avr 2010

Introduction


Nous avions vu lors d'un précédent tutoriel comment accélérer et personnaliser vos services WMS avec MapProxy.
Cette librairie python, similaire à TileCache, permet de se connecter à des serveurs WMS externes ou internes afin de les personnaliser ou de mettre en cache les images afin d'en accélérer le téléchargement.

Les fichiers de configuration de MapProxy


MapProxy dispose de 4 fichiers de configuration :

  • services.yaml : ce fichier spécifie les services, les couches qui seront disponibles ainsi que les informations générales relatives au service WMS (informations, métadonnées...).
  • proxy.yaml : c'est le fichier de configuration principal. Il spécifie quel serveur doit être démarré, l'endroit où les données seront stockées...
  • seed.yaml : c'est le fichier de configuration de l'outil proxy_seed tool (génération automatique des images)
  • log.ini : fichier de configuration des connexions
  • develop.ini et config.ini : ces deux fichiers sont utilisés par l'outil "paster" au démarrage du serveur. Ils permettent de démarrer MapProxy en mode développement ou en mode production

Côté cartographie l'essentielle de la configuration se fait via le fichier service.yaml. Nous nous attarderons donc sur celui-ci.

service.yaml


Comme son extension l'indique, ce fichier est au format yaml. Yaml utilise, tout comme python, l'indentation avec un ou plusieurs espaces afin de décrire les collections imbriquées. Mais attention si en Python il est préférable d'utiliser des tabulations pour l'indentation, pour yaml il est obligatoire d'utiliser des espaces. Mon éditeur de texte étant configuré avec des tabulations, cela m'a pris un peu de temps avant de comprendre pourquoi mon shell me renvoyait systématiquement un message d'erreur. Ne vous faites pas avoir ;)

En yaml les tableaux sont de la forme clé:valeur. MapProxy définit deux sortes de clés : service et layers. Regardons ce qu'elles contiennent.

service

Cette partie décrit les informations générales relatives à notre service.


service:
attribution:
text: "© MyCompany"
md:
title: MapProxy WMS Proxy
abstract: This is the fantastic MapProxy.
online_resource: http://mapproxy.org/
contact:
person: Your Name Here
position: Technical Director
organization:
address: Fakestreet 123
city: Somewhere
postcode: 12345
country: Germany
phone: +49(0)000-000000-0
fax: +49(0)000-000000-0
email:

access_constraints: This service is intended for private and evaluation use only.
fees: 'None'

attribution permet d'ajouter un copyright à vos images.

md pour metadata, définie les informations générales du service. Ce sont ces informations qui seront retournées lors du requête WMS d'une type GetCapabilities.

layers

Toutes les couches définies ici seront ensuite disponibles via MapProxy. La clé de chaque couche qui est aussi son nom sera ensuite utilisée lors des requêtes WMS.

Les clés à préciser étant relativement nombreuses, je ne m'attarderais pas sur celles-ci. Je vous conseille la lecture de la documentation pour plus de détails.

Création de notre propre couche


Pour le moment faisons simple. Nous n'allons pas utiliser notre propre serveur cartographique, mais un de ceux de GeoSignal. Voici les informations nécessaires à sa configuration :


# #########################
# # Layer from GeoSignal
# #########################
geosignal:
md:
title: GeoSignal
param:
# cache tiles in format:
# format: image/png

# cache projected and geographical SRS
srs: ['EPSG:4326']

# store another level between each regular level
res: 'sqrt2'

# request all data in this format:
# request_format: image/png

# use a tile size of:
tile_size: [256, 256]
sources:
- type: cache_wms
req:
url: http://www.geosignal.org/cgi-bin/wmsmap?
layers: Communes
# styles:
# transparent: False
attribution:
text: GeoSignal Data

En consultant ensuite cette url localhost:8080 vous devriez voir apparaitre cette image.

geosignal-communes.png

A propos de l'auteur: 
Arnaud Vandecasteele

Fervent défenseur de l'Open Source, Arnaud s'est spécialisé dans le développement d'application cartographiques web. OpenLayers, PostGIS ou encore Django sont autant d'outils qu'il manipule au quotidien.
S'il n'est pas en face de son ordinateur, vous le retrouverez un GPS à la main en train de cartographier pour OpenStreetMap, de faire voler son drone ou sur un tatami !