Skip to content

Commit 1543be6

Browse files
authored
add(article): restaure l'article 2010 d'Arnaud sur MapProxy (#1457)
Voir #1399 (comment)
2 parents 1b161d7 + 77ba3c7 commit 1543be6

2 files changed

Lines changed: 142 additions & 1 deletion

File tree

config/plugins_redirections.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ redirects:
183183
node/244.md: articles/2010/2010-04-12_arramagong_version3.md
184184
node/247.md: articles/2010/2010-04-08_osgeofr_ouverture_adhesions.md
185185
node/248.md: articles/2010/2010-07-15_modelisation_base_de_donnees_sql_power_architect.md
186-
# node/249.md:
186+
node/249.md: articles/2010/2010-04-23_accelerer-et-personnaliser-services-WMS-avec-MapProxy.md
187187
node/252.md: articles/2010/2010-04-23_geoscript.md
188188
# node/253.md:
189189
node/254.md: articles/2010/2010-04-26_openlayers29.md
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
title: "Accélérer et personnaliser vos services WMS avec MapProxy"
3+
subtitle: "On a tous quelque chose à cacher"
4+
authors:
5+
- Arnaud Vandecasteele
6+
categories:
7+
- article
8+
- tutoriel
9+
date: 2010-04-23
10+
description: Tutoriel sur l’installation et la configuration de MapProxy pour accélérer et transformer des services WMS.
11+
image:
12+
legacy:
13+
- node: 249
14+
license: default
15+
robots: index, follow
16+
tags:
17+
- cache
18+
- MapProxy
19+
- Python
20+
- WMS
21+
---
22+
23+
# Accélérer et personnaliser vos services WMS avec MapProxy
24+
25+
:calendar: Date de publication initiale : {{ page.meta.date | date_localized }}
26+
27+
![Logo MapProxy](https://cdn.geotribu.fr/img/logos-icones/logiciels_librairies/mapproxy.png){: .img-thumbnail-left }
28+
29+
[MapProxy](https://mapproxy.org) est un framework Open Source permettant la gestion des données spatiales. Il permet d'accélérer, de transformer et de tatouer (_watermarking_) des données provenant de serveurs cartographiques. Côté fonctionnement, il se place entre le serveur et le client (architecture _middleware_).
30+
31+
Dans ce tutoriel, nous installerons tout d'abord MapProxy, ensuite nous le paramétrerons et enfin nous effectuerons nos premiers tests.
32+
33+
![Architecture middleware de MapProxy. Source : MapProxy](https://cdn.geotribu.fr/img/articles-blog-rdp/logiciels/MapProxy/mapproxy_schema.png){: .img-center loading=lazy }
34+
35+
## Téléchargement et pré-requis
36+
37+
Il existe différentes manières d'installer un package Python. Vous pouvez faire une installation manuelle en téléchargeant [le package source](https://pypi.org/project/MapProxy/) ou alors utiliser la commande shell `easy_install` (disponible via `python-setuptools` sur Linux Debian). Dans ce tutoriel nous utiliserons un environnement virtuel Python ; toute l'étape de téléchargement sera donc quasi automatique. Il n'est donc pas nécessaire de télécharger l'archive Python de MapProxy.
38+
39+
Nous allons tout d'abord installer les différentes librairies Python que nous allons utiliser :
40+
41+
- [`virtualenv`](https://pypi.org/project/virtualenv/) : permet de séparer vos différents projets python en créant des instances virtuelles. Cela permet par exemple d'essayer une nouvelle librairie encore en phase bêta sans pour autant polluer et/ou corrompre votre répertoire `site-packages` ou encore de faire fonctionner plusieurs versions de la même librairie.
42+
- [`pip`](https://pypi.org/project/pip/) : tout comme `easy_install`, Pip permet d'installer des packages python. Écrit par le même auteur que virtualenv il s'intègre parfaitement à ce dernier.
43+
44+
Si ces termes n'évoquent rien pour vous, je vous conseille la lecture de l'excellent article de Sean Gillies [_Bootstrapping a Python project_](https://sgillies.net/2010/04/01/bootstrapping-a-python-project.html). Dans le monde "Pythonique", ces deux librairies tendent à devenir incontournables. N'hésitez donc pas à prendre quelques minutes et à bien comprendre les concepts.
45+
46+
Pour les personnes fonctionnant sur Ubuntu un simple `sudo aptitude install python-setuptools` suffira à installer les librairies ci-dessus. Enfin pour finir, MapProxy nécessite également l'installation des librairies suivantes :
47+
48+
- C compiler
49+
- Python 2.5 or 2.6 (development tools)
50+
- libjpeg
51+
- zlib
52+
53+
Nous allons le faire en ligne de commande :
54+
55+
```bash
56+
sudo aptitude install build-essential python-dev libjpeg-dev libz-dev libfreetype6-dev```
57+
```
58+
59+
Pour ma part, l'installation s'est faite sur Xubuntu et ce sont les packages suivants qui m'ont été proposés : `libfreetype6-dev`, `libjpeg62-dev` et `zlib1g-dev`.
60+
61+
Voilà tout notre environnement est en place. Il ne reste plus maintenant qu'à installer et paramétrer MapProxy.
62+
63+
----
64+
65+
## Création de l'architecture virtuelle et installation des composants
66+
67+
Nous avions parlé au paragraphe précédent de `virtualenv`. Nous allons le mettre en application immédiatement. Pour cela, placez-vous dans le répertoire où vous allez réaliser votre installation. Pour notre exemple, dans notre répertoire **home**, nous allons créer un répertoire **envPython** qui servira à notre installation.
68+
69+
```bash
70+
~/envPython$ source mapProxy/
71+
~/envPython$ cd mapProxy/
72+
~/envPython$ source bin/activate
73+
(mapProxy)user@osgeolive:~/envPython$
74+
```
75+
76+
La dernière ligne vous indique que vous êtes dans votre environnement Python virtuel. À partir de maintenant toutes les librairies python que vous installerez seront localisées au sein de votre environnement (dans le répertoire `bin`). Ainsi elles ne "pollueront" pas votre répertoire site-packages "officiel".
77+
78+
Passons maintenant aux librairies, utilisées par MapProxy (encore d'autres ^^), que nous allons installer au sein de notre nouvel environnement python virtuel. Le plus simple est de passer par l'utilitaire [`pip`](https://pypi.org/project/pip/).
79+
Celui-ci va permettre de parser un fichier texte et d'installer les librairies qui y sont définies. Pip est normalement installé par défaut dans votre environnement virtuel. Si ce n'est pas le cas (comme sur kubuntu par exemple), faites :
80+
81+
```bash
82+
~/envPython/mapProxy$ easy_install pip
83+
```
84+
85+
Utilisons le maintenant :
86+
87+
```bash
88+
~/envPython/mapProxy$ pip install -r http://bitbucket.org/olt/mapproxy/raw/tip/requirements.txt
89+
```
90+
91+
Quelques minutes plus tard maintenant que tout est installé (enfin !...). Vous pouvez vérifier que tout s'est correctement déroulé en exécutant la commande suivante :
92+
93+
```bash
94+
~/envPython/mapProxy$ python -m mapproxy.core.version
95+
0.8.2
96+
```
97+
98+
Nous pouvons nous attaquer à la configuration de MapProxy.
99+
100+
----
101+
102+
## Initialisation de MapProxy
103+
104+
Rassurez-vous, l'initialisation de MapProxy tient en une ligne de commande. L'utilitaire [Paster](http://pythonpaste.org/) va en effet créer automatiquement toute l'architecture (_skeleton_) des dossiers et fichiers nécessaires.
105+
Toujours dans votre environnement virtuel faites :
106+
107+
```bash
108+
~/envPython/mapProxy$ paster create -t mapproxy_conf mymapproxy
109+
```
110+
111+
`mymapproxy` est le répertoire qui contiendra l'applicatif. Au sein de celui-ci 3 nouveaux répertoires ont été créés :
112+
113+
- `etc` : contient les fichiers de configuration
114+
- `tmp` : comme son nom l'indique, c'est un simple répertoire pour les fichiers temporaires
115+
- `var` : contient les fichiers de log et les données
116+
117+
Il ne reste plus maintenant qu'à démarrer notre serveur MapProxy. pour cela faites :
118+
119+
```bash
120+
mapProxy$ cd mymapproxy/
121+
mymapproxy$ paster serve etc/develop.ini --reload
122+
```
123+
124+
Et vous devriez voir affiché le texte suivant :
125+
126+
```bash
127+
Starting subprocess with file monitor
128+
2010-04-15 12:12:26,504 - INFO - 2663:mapproxy.core.conf_loader:load_services - Reading services configuration: /home/user/envPython/mapProxy/mymapproxy/etc/services.yaml
129+
Starting server in PID 2663.
130+
serving on 0.0.0.0:8080 view at http://127.0.0.1:8080
131+
```
132+
133+
Voilà, notre serveur est maintenant démarré. Il tourne en local (localhost ou 127.0.0.1) sur le port 8080. Testons-le immédiatement avec [la couche Omniscale OpenStreetMap WMS](http://osm.omniscale.net/) configurée par défaut. Pour cela dans votre navigateur exécutez la requête suivante : <http://localhost:8080/service?> . L'image ci-dessous devrait alors vous être retournée.
134+
135+
![Couche OSM Omniscale mise en cache localement avec MapProxy](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2010/mapproxy_image_request.png){: .img-center loading=lazy }
136+
137+
----
138+
139+
<!-- geotribu:authors-block -->
140+
141+
{% include "licenses/default.md" %}

0 commit comments

Comments
 (0)