#1 Mon 30 January 2012 17:55
- phil008
- Participant occasionnel
- Date d'inscription: 10 Sep 2011
- Messages: 23
Mapserver et Openlayers via WMS, carrés roses...
Bonjour,
j'ai du mal à faire marcher OpenLayers avec Mapserver via WMS, je n'ai que des carrés roses...
firebug ne m'indique aucune erreur au niveau du javascript. Qu'est ce qui ne va pas?
mon code html:
Code:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>MapServer Layer</title> <link rel="stylesheet" href="../OpenLayers-2.11/theme/default/style.css" type="text/css" /> <script src="../OpenLayers-2.11/lib/OpenLayers.js"></script> <script type="text/javascript"> function init(){ var map = new OpenLayers.Map( 'map' ); var macarte = new OpenLayers.Layer.WMS( "projet01", "http://localhost/cgi-bin/mapserv?", {map: '/var/www/test/mapfile.map', layers: 'pays, routes'} ); map.addLayer(macarte); map.addControl( new OpenLayers.Control.LayerSwitcher() ); map.zoomToExtent(new OpenLayers.Bounds(-180, -90, 180, 90)); } </script> </head> <body onload="init()"> <h1 id="title">MapServer Layer</h1> <div id="tags"></div> <div id="shortdesc">Shows MapServer Layer</div> <div id="map" class="smallmap"></div> <div id="docs"> Blablabla... </div> </body> </html>
mon mapfile:
Code:
MAP IMAGETYPE PNG EXTENT -25.3 -34.8 57.7 37.3 SIZE 400 300 SHAPEPATH "/var/www/test" IMAGECOLOR 255 255 255 WEB METADATA "wms_title" "projet01" "wms_onlineresource" "http://localhost/cgi-bin/mapserv?" "wms_srs" "EPSG:4326" "wms_enable_request" "*" END END LAYER NAME pays DATA pays.shp TYPE Polygon STATUS ON METADATA "wms_title" "pays" END PROJECTION "init=epsg:4326" END CLASS NAME "NAME" STYLE COLOR 232 232 232 OUTLINECOLOR 32 32 232 END END END LAYER NAME routes DATA routes.shp TYPE line STATUS ON METADATA "wms_title" "routes" END PROJECTION "init=epsg:4326" END CLASS NAME "NAME" STYLE COLOR 1 1 1 END END END END
Merci d'avance.
Dernière modification par phil008 (Tue 31 January 2012 16:27)
Hors ligne
#2 Tue 31 January 2012 15:03
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 726
Re: Mapserver et Openlayers via WMS, carrés roses...
Bonjour,
Il te manque plusieurs choses dans le mapfile au moins : une chaine de connexion à ta bdd dans le layer, de même que l'extent en entête doit correspondre en coordonnées à la zone géographique que tu dois afficher.
Hors ligne
#3 Tue 31 January 2012 16:17
- phil008
- Participant occasionnel
- Date d'inscription: 10 Sep 2011
- Messages: 23
Re: Mapserver et Openlayers via WMS, carrés roses...
Merci de ta réponse:
Par "chaine de connexion à ta bdd" est ce que tu parles de Postgis? Parceque je n'utilise pas Postgis mais de simples fichiers Shapefile (pays.shp et route.shp).
Par rapport à l'extent j'ai corrigé et utilisé dans le fichier HTML la même extent que dans le mapfile (en prenant soin d'intervertir les chiffres car sous OL contrairement à Mapserver la longitude est placée avant la latitude). Malheureusement j'ai toujours le même résultat: des carrés roses.
Je précise que mon mapfile semble ok, car quand j'utilise l'utilitaire shp2img pour tester le mapfile, j'obtiens bien une image de ma carte.
Il doit il ya avoir un probleme au niveau de la connexion WMS. Est ce qu'il faut ouvrir le fichier HTML avec une adresse URL contenant des paramètres particuliers (comme avec mapserver CGI) ou on peut l'ouvrir simplement en double-cliquant ?
Hors ligne
#4 Sun 05 February 2012 16:04
Re: Mapserver et Openlayers via WMS, carrés roses...
Bonjour,
Que donne la requête suivante (à adapter) :
http://localhost/cgi-bin/mapserv?map=/var/www/test/mapfile.map&ERSION=1.3.0&SERVICE=WMS&REQUEST=GetCapabilities ?
Dans ton code OpenLayers, modifie cette partie :
var macarte = new OpenLayers.Layer.WMS( "projet01",
"http://localhost/cgi-bin/mapserv?map=/var/www/test/mapfile.map&",
{layers: 'pays, routes'}
);
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#5 Tue 07 February 2012 19:56
- phil008
- Participant occasionnel
- Date d'inscription: 10 Sep 2011
- Messages: 23
Re: Mapserver et Openlayers via WMS, carrés roses...
Bonsoir,
La requête par URL marche et me renvoie bien une image. En fait j'ai découvert par hasard qu'il faut rajouter "wms_srs" "EPSG:4326" dans le bloc metadata du layer et là j'obtiens l'image. Puis j'ai testé vôtre code javascript mais j'ai toujours ces fameux carrés roses.
En fait, après de nombreux tests, la bonne définition semble être : var macarte = new OpenLayers.Layer.WMS("essai","http://localhost/cgi-bin/mapserv?", {map: '/var/www/test/mapfile.map', transparent: 'TRUE', layers: 'pays', srs: 'EPSG:3857'}, {'reproject': true}); en effet, j'ai bien mes shapefiles qui s'affichent sous Openlayers. ça reste un peu mystérieux pour moi mais l'essentiel c'est que ça roule. Un truc que je comprends pas bien encore c'est que je ne peux pas citer plus d'une couche à la fois dans 'layers: ', sinon ça remet des carrés roses. Je dois créer autant de variables WMS qu'il y a de couches. Enfin bon...
Merci de vôtre aide.
EDIT: autre bug que je ne comprends pas, quand je zoome tout va bien, mais quand je dézoome à fond il y a un gros décalage entre mon shapefile et la couche google map (voir ma capture d'écran ici: http://hfr-rehost.net/fullsize/http://s … a9439.jpeg). Pourtant mon shapefile est bien en google mercator. Si quelqu'un à une explication...
Dernière modification par phil008 (Tue 07 February 2012 20:34)
Hors ligne