banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Fri 08 July 2011 16:39

Léo D.
Juste Inscrit !
Date d'inscription: 8 Jul 2011
Messages: 2

Problème d'encodage d'url avec MapServer, WMS et OpenLayers

Bonjour,

Je chercher depuis plusieurs jours à projeter dans une interface OpenLayers un couche shape depuis une base PostGIS à travers un serveur WMS via MapServer, le tout sans succès.

La couche shape en question est en Lambert I Nord (epsg:27561).

Lorsque j'exécute la page contenant mon code OpenLayers, des tuiles s'affichent, mais au  lieu de contenir ma carte, elles affichent le message d'erreur suivant :

Code:

msWMSLoadGetMapParams(): WMS server error. Invalid SRS given : SRS must be valid for all requested layers.

Je comprends bien que ce message signifie qu'il y a un problème de projection, mais je ne parviens pas à le résoudre… Je pense que l'erreur se situe au niveau du code JavaScript OpenLayers, car lorsque je tente d'accéder à la couche via le mapefile directement cela fonctionne parfaitement, voici l'url que j'ai utilisé pour ce résultat :

Code:

http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&VERSION=1.1.1&REQUEST=GetMap&LAYERS=plan&STYLES=&SRS=EPSG:27561&BBOX=596320.332137793,125469.939357467,604889.312972374,131578.734095216&WIDTH=500&HEIGHT=400&FORMAT=image/png

En regardant le code source produit par OpenLayers, j'ai l'impression que le problème se situe au niveau de l'url qui sert de source aux images à afficher. L'encodage semble en effet mauvais et fait notamment sauter la définition du paramètre SRS (ce qui expliquerait l'erreur de projection) :

Code:

http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&LAYERS=plan&SRS=EPSG%3A4326&WIDTH=256&HEIGHT=256&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&BBOX=-180,0,-90,90

Tous mes fichiers sont encodés en ISO-8859-1 et reconnus comme tels par mon navigateur (Firefox).

Un intervenant du forum aurait-il une idée pour résoudre mon problème ?

Voici mon fichier HTML contenant mon code OpenLayers :

Code:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta title="WMS MapServer et OpenLayers">
<script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body>
<div id="map"></div>
<script type="text/javascript">
    var map = new OpenLayers.Map("map", {displayProjection:new OpenLayers.Projection("EPSG:27561")});
    var wms = new OpenLayers.Layer.WMS("plan", "http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&",
  {layers: "plan",
  srs: "EPSG:27561",
  width: "500",
  height: "400",
  format: "image/png"});
    map.addLayer(wms);
</script>
</body>
</html>

Voici mon mapfile :

Code:

MAP
    EXTENT 596320.332137793 125469.939357467 604889.312972374 131578.734095216
    IMAGECOLOR 0 0 0
    SIZE 600 600
    NAME "Paris"

PROJECTION
    "init=epsg:27561"
END #PROJECTION

WEB
    IMAGEPATH '/Users/macbook/Sites/mapserver/temp/'
    IMAGEURL  '../../temp/'
    METADATA
        "wms_enable_request" "*"
        "wms_title" "WMS Demo Server"
        "wms_onlineresource" "http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&"
        "wms_srs" "epsg:27561"
        "wms_format" "image/png"
    END #METADATA
END #WEB
  
LAYER
    NAME "plan"
    METADATA
        "wms_title" "plan"
        "wms_srs" "epsg:27561"
    END #METADATA
    PROJECTION
        "init=epsg:27561"
    END #PROJECTION
    
    CONNECTIONTYPE POSTGIS
    CONNECTION "user=*** password=*** dbname=*** host=localhost"
    DATA "the_geom FROM paris USING UNIQUE gid USING srid=27561"
    STATUS OFF
    TYPE POLYGON
    
    CLASS
        COLOR 255 255 255
        OUTLINECOLOR 0 100 0
    END #CLASS
  END #LAYER
END #MAP

Et voici le contenu du document XML renvoyé par la requête GetCapabilities pour aider le debugging :

Code:

<?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE WMT_MS_Capabilities SYSTEM "http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd"
 [
 <!ELEMENT VendorSpecificCapabilities EMPTY>
 ]>  <!-- end of DOCTYPE declaration -->

<WMT_MS_Capabilities version="1.1.1">

<!-- MapServer version 6.0.0 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=CAIRO SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=THREADS SUPPORTS=GEOS INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->

<Service>
  <Name>OGC:WMS</Name>
  <Title>WMS Demo Server</Title>
  <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/>
  <ContactInformation>
  </ContactInformation>
</Service>

<Capability>
  <Request>
    <GetCapabilities>
      <Format>application/vnd.ogc.wms_xml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetCapabilities>
    <GetMap>
      <Format>image/png</Format>
      <Format>image/jpeg</Format>
      <Format>image/gif</Format>
      <Format>image/png; mode=8bit</Format>
      <Format>application/x-pdf</Format>
      <Format>image/svg+xml</Format>
      <Format>image/tiff</Format>
      <Format>application/vnd.google-earth.kml+xml</Format>
      <Format>application/vnd.google-earth.kmz</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetMap>
    <GetFeatureInfo>
      <Format>text/plain</Format>
      <Format>application/vnd.ogc.gml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetFeatureInfo>
    <DescribeLayer>
      <Format>text/xml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </DescribeLayer>
    <GetLegendGraphic>
      <Format>image/png</Format>
      <Format>image/jpeg</Format>
      <Format>image/gif</Format>
      <Format>image/png; mode=8bit</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetLegendGraphic>
    <GetStyles>
      <Format>text/xml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv?map=/Users/macbook/Sites/mapserver/paris/wms/postgis.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetStyles>
  </Request>
  <Exception>
    <Format>application/vnd.ogc.se_xml</Format>
    <Format>application/vnd.ogc.se_inimage</Format>
    <Format>application/vnd.ogc.se_blank</Format>
  </Exception>
  <VendorSpecificCapabilities />
  <UserDefinedSymbolization SupportSLD="1" UserLayer="0" UserStyle="1" RemoteWFS="0"/>
  <Layer>
    <Name>Vasserot</Name>
    <Title>WMS Demo Server</Title>
    <Abstract>Vasserot</Abstract>
    <SRS>epsg:27561</SRS>
    <LatLonBoundingBox minx="2.28633" miny="48.8297" maxx="2.40317" maxy="48.8846" />
    <BoundingBox SRS="EPSG:27561"
                minx="596320" miny="125470" maxx="604889" maxy="131579" />
    <Layer queryable="0" opaque="0" cascaded="0">
        <Name>plan</Name>
        <Title>plan</Title>
        <SRS>epsg:27561</SRS>
        <LatLonBoundingBox minx="-180" miny="-67.866" maxx="180" maxy="-36.074" />
        <BoundingBox SRS="epsg:27561"
                    minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
    </Layer>
  </Layer>
</Capability>
</WMT_MS_Capabilities>

Merci d'avance pour votre aide.

PS : J'utilise la version 6 de MapServer.

Hors ligne

 

#2 Fri 08 July 2011 19:39

Léo D.
Juste Inscrit !
Date d'inscription: 8 Jul 2011
Messages: 2

Re: Problème d'encodage d'url avec MapServer, WMS et OpenLayers

Je me permets de faire un double-post, car je viens de résoudre mon problème !
Il semblerait que cela venait d'une erreur de syntaxe dans les options de la fonction OpenLays.Map :

Il fallait écrire :

Code:

projection: "EPSG:27561"

Et non pas :

Code:

displayProjection:new OpenLayers.Projection("EPSG:27561")

Désolé d'avoir, du coup, créé un sujet pour rien… Peut-être que mon cas servira à quelqu'un.

Hors ligne

 

Pied de page des forums

Powered by FluxBB