#1 Fri 03 February 2012 15:24
[OpenLayers 2.11] Affichage WMS / MapServer
Bonjour,
J'essaie sans succès d'afficher un WMS produit par MapServer.
Mon environnement est un serveur dédié virtuel sous Ubuntu.
Il s'agit d'un tout simple fichier Shape en WGS84 (EPSG:4326).
Voici le MapFile :
Code:
MAP
NAME "essai_wms"
SIZE 800 600
EXTENT 1.936506 48.715488 2.105538 48.799863
STATUS ON
UNITS METERS
SHAPEPATH "/var/www/mapserver/data"
IMAGECOLOR 255 255 255
IMAGETYPE PNG
WEB
METADATA
"wms_title" "essai_wms"
"wms_onlineresource" "http://xxx/cgi-bin/mapserv?map=/var/www/mapfiles/essai_mswms.map&"
"wms_srs" "EPSG:4326"
"wms_format" "image/png"
"wms_enable_request" "*"
END
END
PROJECTION
"init=epsg:4326"
END
LAYER
NAME "com_layer"
DATA "com_layer"
STATUS ON
TYPE POLYGON
PROJECTION
"init=epsg:4326"
END
METADATA
"wms_title" "com_layer"
"wms_srs" "EPSG:4326"
END
CLASS
NAME "com_layer"
STYLE
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
END
END
ENDEt voici le code javascript :
Code:
var map = new OpenLayers.Map("map", {
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Attribution(),
new OpenLayers.Control.MousePosition()
],
maxResolution: "auto",
projection: new OpenLayers.Projection("EPSG:4326")
});
var ol_layer = new OpenLayers.Layer.WMS(
"OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers: "basic"}
);
map.addLayer(ol_layer);
com_layer = new OpenLayers.Layer.WMS("com_layer",
"http://http://xxx/cgi-bin/mapserv?map=/var/www/mapfiles/essai_mmswms.map&",
{layers: "com_layer",
isBaseLayer: false
}
);
map.addLayer(com_layer);
map.zoomToMaxExtent();J'obtiens bien le fond de carte, mais pas ma couche supplémentaire de communes, qui pourtant est bien présente dans le LayerSwitcher et s'affiche bien lorsque je charge le wms dans QGIS ou bien directement le navigateur par l'url suivante :
Code:
http://xxx/cgi-bin/mapserv?map=/var/www/mapfiles/essai_mswms.map&layer=com_layer&mode=map
Merci de votre aide,
Christophe Damour (SIGéal)
Hors ligne
#2 Fri 03 February 2012 15:31
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Christophe,
Il manque les métadatas dans la couche. Test ton GetCapabilities http://monhost?map=XXX&REQUEST=GetCapabilities&VERSION=1.3.0&SERVICE=WMS et corrige les problèmes à l'aides des messages en commentaire.
Tu peux aussi utiliser firebug pour obtenir les url des tuiles dans OpenLayers pour voir le message d'erreur si nécessaire.
Je te laisse faire une recherche dans le wiki ![]()
Y.
[edit] lu trop vite, les métadatas existent bien, mais le reste du message est utile pour retrouver des informations ![]()
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
#3 Fri 03 February 2012 18:31
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Bonjour Yves,
Merci pour ta réponse.
Elle va m'aider car je n'avais pas pensé à utiliser l'onglet Réseau de Firebug !
Du coup j'ai pu corriger un premier problème dans l'url du mapfile (http redoublé).
En testant directement l'url d'une tuile donnée par Firebug, j'obtiens l'erreur suivante :
Code:
msLoadMap(): Unable to access file. (/var/www/mapfiles/essai_mmswms.map)
Je pense donc que mon problème est lié aux droits d'accès sur le mapfile ou le dossier dans lequel il se trouve.
Pour le moment je n'ai pas encore trouvé la bonne configuration...
As-tu des conseils en la matière ?
Christophe Damour (SIGéal)
Hors ligne
#4 Sun 05 February 2012 16:13
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Bonjour,
Es tu sur que le chemin vers le fichier est correct ?
Tu peux faire un test un peu bourrin avec chmod -R a+r /var/www/. Si cela fonctionne tu peux revenir à des droits plus restrictifs.
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 Sun 05 February 2012 17:17
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Le chemin était correct, mais effectivement j'ai du modifier les droits et le propriétaire du dossier dans lequel je mets mes mapfiles. Par ailleurs, il y avait un autre problème dans mon mapfile : UNITS METERS alors que le srs est 4326...
Ces corrections faites, j'ai réussi à faire à visualiser ma couche dans openlayers, et à la superposer à un fond en 4326.
Je progresse donc...
Je suis donc passé à un essai plus compliqué avec une couche POSTGIS en 4326, que je voudrais superposer à un fond osm en 900913.
Voilà ce que j'ai essayé qui me semble correspondre à ce que disent les docs :
Code:
MAP
NAME "essai_wms"
SIZE 800 600
EXTENT 1.936506 48.715488 2.105538 48.799863
STATUS ON
IMAGECOLOR 255 255 255
IMAGETYPE PNG
WEB
METADATA
"wms_title" "essai_wms"
"wms_onlineresource" "http:/***/cgi-bin/mapserv?map=/var/www/mapfiles/essai_mswms_4326.map&"
"wms_srs" "EPSG:4326 EPSG:900913"
"wms_format" "image/png"
END
END
PROJECTION
"init=epsg:4326"
END
LAYER
DEBUG ON
NAME "communes "
CONNECTIONTYPE POSTGIS
CONNECTION "user=*** password=*** dbname=*** host=localhost port=5432"
DATA "the_geom from communes using unique gid using srid=4326"
STATUS DEFAULT
TYPE POLYGON
PROJECTION
"init=epsg:4326"
END
METADATA
"wms_title" "communes "
"wms_srs" "EPSG:4326 EPSG:900913"
# "wms_extent" "1.936506 48.715488 2.105538 48.799863"
END
CLASS
NAME "communes "
STYLE
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
END
END
ENDMalheureusement, je n'obtiens aucun affichage sous openlayers.
Lorsque je vérifie le GetCapabilities, je constate qu'il y a un souci avec les bounding box :
Code:
<Layer>
<Name>essai_wms</Name>
<Title>essai_wms</Title>
<Abstract>essai_wms</Abstract>
<SRS>EPSG:4326</SRS>
<SRS>EPSG:900913</SRS>
<LatLonBoundingBox minx="1.93651" miny="48.7155" maxx="2.10554" maxy="48.7999" />
<BoundingBox SRS="EPSG:4326"
minx="1.93651" miny="48.7155" maxx="2.10554" maxy="48.7999" />
<Layer queryable="0" opaque="0" cascaded="0">
<Name>communes</Name>
<Title>communes</Title>
<SRS>EPSG:4326</SRS>
<SRS>EPSG:900913</SRS>
<LatLonBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
<BoundingBox SRS="EPSG:4326"
minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />As-tu une idée de ce qui ne va pas ?
Christophe Damour (SIGéal)
Hors ligne
#6 Sun 05 February 2012 18:04
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Bonjour,
Je ne vois pas ce qui pourrait poser problème dans le mapfile. Que donne l'url demandée par OpenLayers ?
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
#7 Sun 05 February 2012 18:21
Re: [OpenLayers 2.11] Affichage WMS / MapServer
L'url appelée par OpenLayers est la suivante :
Code:
http://***/cgi-bin/mapserv?map=/var/www/mapfiles/essai_mswms_4326.map&
Si je la complète avec la clause layer et le mode map, la couche s'affiche parfaitement dans le navigateur.
Code:
http://***/cgi-bin/mapserv?map=/var/www/mapfiles/essai_mswms_4326.map&layer=communes&mode=map
Lorsque je charge la page openlayers, firebug me donne l'url suivante :
Code:
http://***/cgi-bin/mapserv?map=/var/www/mapfiles/essai_mswms_4326.map&LAYERS=communes&TRANSPARENT=TRUE&ISBASELAYER=false&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image%2Fpng&SRS=EPSG%3A900913&BBOX=-180,-90,40074836.68,40074926.68&WIDTH=256&HEIGHT=256
Le problème est certainement lié à cette bounding box farfelue...
Christophe Damour (SIGéal)
Hors ligne
#8 Sun 05 February 2012 18:43
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Christophe,
As tu adapté ton code JavaScript ? Par défaut OpenLayers prend des valeurs en WGS84 pour la bbox. Il faut donc "lui" dire que tu es en 900913 pour la projection et lui donner une bbox cohérente (en 900913).
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
#9 Sun 05 February 2012 19:31
Re: [OpenLayers 2.11] Affichage WMS / MapServer
J'ai les lignes suivantes dans le code de création de l'objet Map :
Code:
units: "m",
projection: new OpenLayers.Projection("EPSG:900913")Que veux-tu dire par "lui donner une BBOX cohérente (en 900913)" ?
J'ai essayé de remplacer ma clause EXTENT dans le mapfile par des coordonnées en 900913, mais ça n'a rien changé...
Christophe Damour (SIGéal)
Hors ligne
#10 Sun 05 February 2012 20:10
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Bonsoir,
Pas dans le mapfile, dans l'objet map d'OpenLayers :
http://dev.openlayers.org/docs/files/Op … .maxExtent
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
#11 Sun 05 February 2012 20:17
Re: [OpenLayers 2.11] Affichage WMS / MapServer
Yesss !
Merci mille fois pour ton aide dominicale, Yves.
En synthèse, j'ai résolu mon problème comme suit :
- En rendant l'utilisateur apache propriétaire du dossier des mapfiles.
- En supprimant la clause UNITS METER (incompatible avec le srs 4326) dans le mapfile.
- En précisant dans mon code openlayers une bouding box cohérente avec ce que renvoie le mapfile wms, mais exprimée dans les coordonnées compatibles avec le srs de l'objet map openlayers (900913) :
Code:
maxExtent: new OpenLayers.Bounds(215570.837459, 6226722.756288, 234387.367578, 6240970.351355)
Je poursuis mes investigations.
Prochaine étape : passer au serveur WFS.
Dernière modification par SIGEAL (Thu 16 February 2012 07:31)
Christophe Damour (SIGéal)
Hors ligne


