Interfacer OpenLayers avec un serveur WMS (MapServer

Transcription

Interfacer OpenLayers avec un serveur WMS (MapServer
Published on GeoTribu (http://geotribu.net)
Accueil > Interfacer OpenLayers avec un serveur WMS (MapServer/Geoserver)
17
22 aoû 2008
Interfacer OpenLayers avec un serveur WMS
(MapServer/Geoserver)
[1]
Arnaud [2]
OpenLayers [3], GeoServer [4], MapServer [5]
- Introduction Ce tutorial vous permettra d'appréhender au mieux la notion de serveur WMS puis de le
mettre en application ensuite au moyen de deux exemples concrets en se basant sur
MapServer et GéoServer. L'affichage sera ensuite géré par OpenLayers.
- Qu'est-ce que la norme WMS et comment elle fonctionne
- Faire de MapServer un serveur WMS
- Faire de GéoServer un serveur WMS
- Afficher une carte WMS avec OpenLayers
- Qu'est-ce que la norme WMS et comment elle fonctionne WMS qui signifie "Web Map Service" est un protocole défini par l'Open Geospatial
Consortium (OGC) permettant au moyen d'une URL formatée d'interroger des serveurs
cartographiques et d'obtenir ainsi des cartes géoréférencées..
Ce protocole est devenu un standard implémenté par la quasi-totalité des serveurs
cartographiques tels que MapServer, GeoServer, ArcGis Server... Côtè client, de nombreuses
applications permettent l'interrogation de ces services : OpenLayers, GoogleMap,
PMapServer, MapGuide OS...
Comme nous l'avons rapidement abordé, l'interrogation d'un serveur WMS se fait par l'URL à
laquelle est passée des arguments bien définis. Ces mots-clés une fois mis bout à bout
forment un ensemble compréhensible par le serveur cartographique. Les différents
paramètres possibles sont :
* VERSION : Version du protocole WMS.
* REQUEST : Types d'opérations possibles -> GetCapabilities, GetMap, GetFeatureInfo.
* OUTPUTFORMAT : Format de sortie de l'image (exemple : image/png).
* BBOX : Etendue de la carte.
* WIDTH : Largeur de l'image.
* HEIGHT : Hauteur de l'image.
* LAYERS : Liste des couches désirées.
* SRS : Système de projection utilisé.
Voici un exemple d'URL :
http:
//map.ngdc.noaa.gov/servlet/com.esri.wms.Esrimap?servicename=glacier&WMTVER=1.0&request=Get
100,-90,100,80
&WIDTH=400&HEIGHT=400&LAYERS=Continents,Rivers,Glaciers%20(all%20sizes)&STYLES=&FORM
Un serveur WMS est composé de 3 parties essentielles : le serveur cartographique, les
données et le client. Un exemple de reque serait la suivante : une requête de type "GetMap"
est envoyée par le navigateur au serveur cartographique. Celui-ci, en fonction de sa
configuration et des données, retourne la carte correspondante.
Image not found
http://ks356007.kimsufi.com/arno/geotribu/img_site/tutoriaux/wms/wms_light.png
- Faire de MapServer un serveur WMS Cette partie suppose que vous soyez déjà familier de l'environnement MapServer et que vous
sachiez comment est constitué un MapFile. Dans le cas contraire, je vous invite à lire
auparavant ce tutorial : Tutorial MapServer.
Pour spécifier permettre à MapServer de fonctionner en tant que serveur WMS, il sera
nécessaire d'ajouter trois éléments à votre MapFile. Un dans le bloc Web, et deux pour
chacune des couches que vous souhaitez rendre disponible. Pour le bloc Web il faut ajouter
un sous bloc nommé METADATA qui est composé des éléments ci-dessous :
METADATA
"wms_title" "WMS Demo Server"
"wms_onlineresource" "localhost/cgibin/mapserv?map=path_to_mapfile/demo.map&"
"wms_srs" "epsg:4326"
"wms_format" "image/png"
END
Ensuite pour chaque couche il faudra ajouter deux blocs, le premier est obligatoire
contrairement au second qui est optionnel mais fortement recommandé
METADATA
"wms_title" "Commune" ##required
END
PROJECTION
"init=epsg:4326" ##recommended
END
Pour un aperçu plus global vous pouvez également télécharger le MapFile qui a servi pour ce
tutorial
- Faire de GéoServer un serveur WMS GeoServer ne nécessite aucune modification. Il propose de base un service WMS. Pour
ajouter des données à GeoServer je vous conseille la lecture de ce tutorial : Ajouter des
Shape dans GéoServer
- Afficher une carte WMS avec OpenLayers Il existe différentes classes permettant l'interrogation de serveur WMS via OpenLayers. Mais
elles se basent toutes sur le même mécanisme que l'on a étudié durant la première partie.
Nous devons tout d'abord spécifier le début de l'URL, ensuite nous lui passons les différents
paramètres souhaités. Cela se fait de la manière suivante :
Pour GeoServer
// Layer GeoServer
Alea_volcanisme = new OpenLayers.Layer.WMS(
"Risque Sismique - Untiled", "http://server_path:8080/geoserver/wms,
{
srs: 'EPSG:4326',
width: '588',
styles: '',
height: '550',
layers: 'topp:risque_sismique',
transparent:"true",
format: 'image/png'
}
{singleTile: true, opacity: 0.5, isBaseLayer : false}
);
Pour MapServer
// Layer MapServer
Alea_volcanisme = new OpenLayers.Layer.WMS(
"Volcanisme", "http://localhost/cgibin/mapserv?map=path_To_MapFile/mFile.map&",
{
srs: 'EPSG:4326',
width: '800',
styles: '',
height: '550',
layers: 'Alea_volcanisme',
transparent:"true",
format: 'image/png'
}
{singleTile: true, opacity: 0.5, isBaseLayer : false}
);
Ne disposant pas de serveur personnel tous les tests ont été effectués en local. La copie
d'écran ci-dessous, qui est une représentation des risques sismiques et volcaniques à La
Réunion, vous donnera néanmoins un aperçu de ce qu'il est possible de réaliser. Les
données utilisées sont disponibles sur le site Internet de La Diren de La Réunion [6].
WMS
Image not found
http://geotribu.net/img_site/tutoriaux/wms/reunion_risque.jpg
GeoServer [7]
MapServer [8]
OpenLayers [9]
WebMapping - OGC [10]
Intermédiaire [11]
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 !
Team GeoTribu
Image not found
Image not found
Image not found
Image not found
Image not found
Image not found
Image not fou
http://88.191.142.86/geotribu_d7/./sites/default/public/public_res//img/fabtest.png
http://88.191.142.86/geotribu_d7/./sites/default/public/public_res//img/fabtest.png
http://88.191.142.86/geotribu_d7/./sites/default/public/public_res//img/fabtest.png
http://88.191.142.86/geotribu_d7/./sites/default/public/public_res//img/fabtest.pn
http://88.191.142.86/geotribu_d7/./sites/default/public/pub
http://88.191.142.86/geotribu_d7/./si
http://88.191.1
Source URL: http://geotribu.net/node/9
Links:
[1] http://geotribu.net/node/9
[2] http://geotribu.net/user/1
[3] http://geotribu.net/taxonomy/term/15
[4] http://geotribu.net/taxonomy/term/29
[5] http://geotribu.net/taxonomy/term/40
[6] http://www.reunion.ecologie.gouv.fr/
[7] http://geotribu.net/taxonomy/term/1
[8] http://geotribu.net/taxonomy/term/4
[9] http://geotribu.net/taxonomy/term/5
[10] http://geotribu.net/taxonomy/term/12
[11] http://geotribu.net/taxonomy/term/8