Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Printemps des cartes 2024

#1 Thu 29 April 2010 15:00

plouplou
Participant occasionnel
Date d'inscription: 3 Mar 2010
Messages: 30

Openlayers projection lambert II étendu

Débutants dans le domaine du webmapping, nous sommes entrain d’installer une solution webmapping à partir d’openlayers et mapserver pour diffuser des fichiers de type shape en Lambert II étendu.

Nous arrivons à nos couches dans openlayers mais celles-ci apparraisent en WGS84 (EPSG :4326) au lieu du Lambert 2 étendu (EPSG :27582) souhaité…

Nous avons modifié le MAPFILE pour tenter de diffuser le WMS et le WFS en EPSG :27582…

Dans le mapfile nous avons donc :
-    modifié le EXTENT…
-    modifié le « wms_srs » et le « wfs_srs » du bloc « web »
-    modifié le « init » du bloc « projection »
-    et rajouté « wms_srs » et « wfs_srs » pour chaque couche… (à priori non nécessaire…)

Dans le code Openlayers nous avons :
-    ajouté le newExtent :new OpenLayers.Bounds
-    ajouté l’unité « m »
-    ajouté la projection « EPSG :27582 »

Tout ceci ne donne rien de concluant… Lorsque je rajoute « alert(map.getProjection()); » dans mon code HTML j’ai toujours « EPSG :4326 » en retour…

Nous avons du raté quelque chose quelque part…
Merci d’avance de votre aide !


(Source : mapfile et données de test : http://geotribu.net/node/42)

Code:

MAP
    NAME "mywms"
    IMAGETYPE PNG24     
    EXTENT 0 0 1100000 2700000
    SIZE 600 300
    UNITS dd
    IMAGECOLOR 255 255 255
    SHAPEPATH "c:/ms4w/Apache/htdocs/wfs/data"
    TRANSPARENT on 

    WEB
        IMAGEPATH "c:/ms4w/Apache/htdocs/wfs/tmp"
        IMAGEURL "./tmp"
        METADATA
            ### WMS 
              "wms_title"                "WMS Demo Server"
              "wms_onlineresource"    "localhost/cgi-bin/mapserv?map=c:/ms4w/wfs/africa.map&"  
              "wms_srs"                "epsg:27582"    
              "wms_format"             "image/png" 
              ### WFS 
              "wfs_title"                "WFS Demo Server"
            "wfs_onlineresource"       "localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/wfs/africa.map&?"  ## Recommended
            "wfs_srs"               "epsg:27582"  ## Recommended
        END      
    END

    PROJECTION
        "init=epsg:27582"  
    END

    OUTPUTFORMAT
        NAME png
        DRIVER "GD/PNG"
        MIMETYPE "image/png"
        IMAGEMODE PC256
        EXTENSION "png"
        TRANSPARENT ON
    END


    ###### Layer 1 #######################
    LAYER
            NAME dep
            STATUS ON 
            METADATA
                ### WMS 
                "wms_title"    "dep" 
                "wms_srs"      "EPSG:27582"
                ### WFS 
                "wfs_title"    "dep" 
                "wfs_srs"      "EPSG:27582"
                "gml_featureid" "NAME" 
                "gml_include_items" "all"
            END
            PROJECTION
                "init=epsg:27582"
            END
            DUMP TRUE
            TYPE POLYGON
            STATUS ON
            DATA dep
            CLASS
                COLOR 130 130 130
                OUTLINECOLOR 0 0 0 
            END

    END###### END OF Layer 1 ###### 
    
END ###### END OF Map File  ######

Code html :

Code:

map = new OpenLayers.Map('map',{ maxExtent:new OpenLayers.Bounds(0,1776000,1100000,2750000),
                maxResolution: 'auto',
                units:'m',projection:'EPSG:27582',controls:[new OpenLayers.Control.MouseDefaults()]});
                
// *** couche dep Wfs
    
        fStyle=featureStyle();        
        var depWFS = new OpenLayers.Layer.WFS( "dep  WFS","http://192.168.3.85/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/wfs/africa.map&", {typename: 'dep'}, { extractAttributes: true});

map.addLayers([depWFS]);

Hors ligne

 

#2 Thu 29 April 2010 17:51

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: Openlayers projection lambert II étendu

Avant toute chose avez-vous validé que votre WMS et WFS, avec MapServer, réagissait bien dans la projection souhaitée ? Avez-vous tester une requête WMS de type GetMap avec SRS=EPSG:27582 et une BBOX dans ce système de projection ? Avez-vous tester une requête WFS et vérifier que les coordonnées était bien exprimées dans votre projection ?

Ensuite pour OpenLayers, à l'aide du navigateur Firefox et de l'extension FireBug, vous pouvez vérifier les requêtes grâce à l'onglet Console. Je vous conseille donc d'utiliser Firefox et l'extension FireBug pour identifier si la requête construite par OpenLayers est juste ou pas.

Hors ligne

 

#3 Thu 29 April 2010 18:14

GeoMax
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 15 Feb 2006
Messages: 21

Re: Openlayers projection lambert II étendu

René-Luc D'Hont a écrit:

Avant toute chose avez-vous validé que votre WMS et WFS, avec MapServer, réagissait bien dans la projection souhaitée ? Avez-vous tester une requête WMS de type GetMap avec SRS=EPSG:27582 et une BBOX dans ce système de projection ? Avez-vous tester une requête WFS et vérifier que les coordonnées était bien exprimées dans votre projection ?

Ensuite pour OpenLayers, à l'aide du navigateur Firefox et de l'extension FireBug, vous pouvez vérifier les requêtes grâce à l'onglet Console. Je vous conseille donc d'utiliser Firefox et l'extension FireBug pour identifier si la requête construite par OpenLayers est juste ou pas.


²Bonjour,

Merci pour cette réponse !
nous avons bien pensé à tester le WMS et le WFS pour les valider mais comment faire ...?
Est-ce possible par une réquête HTTP directement dans le navigateur ?

Merci d'avance,

(Serveur firebug down pour le moment... :'( )

Hors ligne

 

#4 Thu 29 April 2010 19:21

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: Openlayers projection lambert II étendu

Bonsoir,

Biensûr que tu peux tester le WMS et le WFS dans un navigateur puisque ces normes définissent des URLs!

http://mondommaine/mapserv?map=path/to/mapfile.map&SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&SRS=ESPG:27582&LAYERS=yourlayer&BBOX=aBbox&WIDTH=500&HEIGHT=500&FORMAT=image/png

Je ne me rappelles pas tous les paramètres mais je crois que c'est un minimum. Tu trouveras des infos ici :
http://mapserver.org/ogc/wms_server.html

D'ailleurs tu peux aussi tester le WMS dans QGIS, et le WFS dans QGIS avec l'extension WFS.

Hors ligne

 

#5 Thu 29 April 2010 21:43

Bruno
Membre du bureau
Lieu: Toulouse
Date d'inscription: 22 Jun 2005
Messages: 11766
Site web

Re: Openlayers projection lambert II étendu

Bonsoir,

Je me permets de déplacer ce sujet sur le forum ad hoc.

Bruno

Hors ligne

 

#6 Thu 29 April 2010 22:59

ranalisolofo.larrys
Participant occasionnel
Lieu: Ambolonkandrina
Date d'inscription: 19 Jul 2007
Messages: 40
Site web

Re: Openlayers projection lambert II étendu

Ou est ce que vous avez specifié la projetion Lambert II étendue ? Sur l'objet Map ?
Le layer définit comme baselayer emporte sur le map donc ajouter la projection 27582 sur le layer baselayer pour que la projection soit changé.

Larrys

Hors ligne

 

#7 Thu 29 April 2010 23:52

GeoMax
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 15 Feb 2006
Messages: 21

Re: Openlayers projection lambert II étendu

René-Luc D'Hont a écrit:

Bonsoir,

Biensûr que tu peux tester le WMS et le WFS dans un navigateur puisque ces normes définissent des URLs!

http://mondommaine/mapserv?map=path/to/mapfile.map&SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&SRS=ESPG:27582&LAYERS=yourlayer&BBOX=aBbox&WIDTH=500&HEIGHT=500&FORMAT=image/png

Je ne me rappelles pas tous les paramètres mais je crois que c'est un minimum. Tu trouveras des infos ici :
http://mapserver.org/ogc/wms_server.html

D'ailleurs tu peux aussi tester le WMS dans QGIS, et le WFS dans QGIS avec l'extension WFS.


J'ai réussi le requete WMS, merci !

et j'obtiens un joli message d'erreur ... :

Code:

<?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE ServiceExceptionReport SYSTEM "http://schemas.opengis.net/wms/1.1.1/exception_1_1_1.dtd">
<ServiceExceptionReport version="1.1.1">
<ServiceException code="InvalidSRS">
msWMSLoadGetMapParams(): WMS server error. Unsupported SRS namespace (only EPSG and AUTO currently supported).
</ServiceException>
</ServiceExceptionReport>

EDIT :
En creusant un peu j'obtiens une image avec la requete suivante :
&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:27582&BBOX=000000,1500000,1300000,3000000&WIDTH=887&HEIGHT=452&LAYERS=dep&FORMAT=image/gif&
[img]http://img571.imageshack.us/img571/7964/mapserv.th.gif[/img]

Uploaded with ImageShack.us

J'ai bien mis les coordonnées de la bbox en Lambert 2 étendu mais apparemment la reprojection n'est pas faite ...

Dernière modification par GeoMax (Mon 17 October 2011 17:24)

Hors ligne

 

#8 Fri 30 April 2010 09:28

pgiraud
Juste Inscrit !
Date d'inscription: 24 Jun 2009
Messages: 6

Re: Openlayers projection lambert II étendu

Attention aux copier/coller un peu hâtifs !
Il y a une petite coquille dans l'exemple de René-Luc. Il faut lire EPSG au lieu de ESPG.

En ce qui concerne OpenLayers, après une lecture (très rapide) de votre code, je pense que vous allez de toute façon être confrontés à un problème de taille. Il n'y a pas de base layer. Or c'est obligatoire pour OpenLayers.
La solution la plus directe dans votre cas serait de forcer votre layer WFS (qui est une layer de type vectoriel et donc overlay par défaut) comme base layer. Pour cela, il vous faut rajouter "isBaseLayer: true" dans la liste de ses options.
Idéalement, j'aurai commencé par tester le service avec une layer WMS simple avant de me risquer avec le WFS, un tantinet plus casse-gueule.

Hors ligne

 

#9 Fri 30 April 2010 09:33

GeoMax
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 15 Feb 2006
Messages: 21

Re: Openlayers projection lambert II étendu

René-Luc D'Hont a écrit:

... Avez-vous tester une requête WFS et vérifier que les coordonnées était bien exprimées dans votre projection ?


Après avoir testé le WMS (et obtenu une image "écrasée") j'ai testé le WFS et j'obtiens une liste de coordonnées mais elles ne sont visiblement pas en lambert 2 étendu ...

Code:

-5.139026,41.363043 9.559832,51.089388 0.053739,46.736620 1.364463,47.708117 0.382784,47.643093 0.391501,47.640999 0.396246,47.640844 0.422160,47.619573 0.431733,47.618309 0.451395,47.621455 0.459235,47.640592 0.461171,47.643799 0.475455,47.646881 0.478492,47.644167 0.493411,47.645071 0.498414,47.644754 0.516726,47.656216 0.525725,47.653927 0.545229,47.657162 0.555773,47.663964 0.559602,47.666173 0.558781,47.670793 0.588947,47.670045 0.612689,47.682913 0.617946,47.688820 0.614427,47.694211 0.628786,47.708025 0.638766,47.708117 0.651948,47.698467 0.645511,47.689296 0.649225,47.684366 0.654253,47.684178 0.672590,47.695894 0.674771,47.699002 0.707312,47.682963 0.712144,47.681807 0.719407,47.689996 0.732597,47.693084 0.735641,47.695537 0.787171,47.680825 0.80

Ma requete :

Code:

&service=WFS&version=1.0.0&request=GetFeature&SRS=EPSG:27582&typeName=dep

Mon map file :

Code:

MAP
    NAME "mywms"
    IMAGETYPE PNG24     
    EXTENT -25.360559 -34.814999 57.785820 37.338039
    SIZE 600 300
    UNITS dd
    IMAGECOLOR 255 255 255
    SHAPEPATH "c:/ms4w/Apache/htdocs/wfs/data"
    TRANSPARENT on 

    WEB
        IMAGEPATH "c:/ms4w/Apache/htdocs/wfs/tmp"
        IMAGEURL "./tmp"
        METADATA
            ### WMS 
              "wms_title"                "WMS Demo Server"
              "wms_onlineresource"    "http://192.168.3.85/cgi-bin/mapserv?map=c:/ms4w/Apache/htdocs/cof/mapfile.map&"  
              "wms_srs"                "epsg:4326 epsg:27582"    
              "wms_format"             "image/png" 
              ### WFS 
              "wfs_title"                "WFS Demo Server"
            "wfs_onlineresource"       "http://192.168.3.85/cgi-bin/mapserv?map=c:/ms4w/Apache/htdocs/cof/mapfile.map&?"  ## Recommended
            "wfs_srs"               "epsg:4326 epsg:27582"  ## Recommended
        END      
    END

    PROJECTION
        "init=epsg:27582"  
    END

    OUTPUTFORMAT
        NAME png
        DRIVER "GD/PNG"
        MIMETYPE "image/png"
        IMAGEMODE PC256
        EXTENSION "png"
        TRANSPARENT ON
    END

    ###### Layer 4 #######################
    LAYER
            NAME dep
            STATUS ON 
            METADATA
                ### WMS 
                "wms_title"    "dep" 
                ### WFS 
                "wfs_title"    "dep" 
                "gml_featureid" "NAME" 
                "gml_include_items" "all"
            END
            PROJECTION
                "init=epsg:27582"
            END
            DUMP TRUE
            TYPE POLYGON
            STATUS ON
            DATA dep
            CLASS
                COLOR 130 130 130
                OUTLINECOLOR 0 0 0 
            END

    END###### END OF Layer 3 ###### 
    
END ###### END OF Map File  ######

Mon problème vient donc bien du serveur WMS/WFS qui continu a diffuser en EPSG:4326 au lieu du EPSG:27582...
Je suppose que cela vient du Mapfile mais j'avoue ne pas comprendre ce qui manque...

EDIT :

en modifiant le "wfs_srs" du mapfile et en n'y laissant que "ESPG:27582" j'obtiens bien mais coordonnées en L2et !

Code:

47680.000000,1620480.000000 1197822.000000,2677441.000000 426955.000000,2193900.000000 526245.000000,2302342.000000 453215.000000,2295555.000000 453864.000000,2295306.000000 454220.000000,2295280.000000 456109.000000,2292868.000000 456825.000000,2292710.000000 458311.000000,2293024.000000 458951.000000,2295137.000000 459105.000000,2295490.000000 460186.000000,2295807.000000 460407.000000,2295500.000000 461530.000000,2295574.000000 461905.000000,2295530.000000

Manque plus qu'a visualiser ces coord sous openlayer ...

Dernière modification par GeoMax (Mon 17 October 2011 17:24)

Hors ligne

 

#10 Fri 30 April 2010 10:09

GeoMax
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 15 Feb 2006
Messages: 21

Re: Openlayers projection lambert II étendu

pgiraud a écrit:

Attention aux copier/coller un peu hâtifs !
Il y a une petite coquille dans l'exemple de René-Luc. Il faut lire EPSG au lieu de ESPG.

En ce qui concerne OpenLayers, après une lecture (très rapide) de votre code, je pense que vous allez de toute façon être confrontés à un problème de taille. Il n'y a pas de base layer. Or c'est obligatoire pour OpenLayers.
La solution la plus directe dans votre cas serait de forcer votre layer WFS (qui est une layer de type vectoriel et donc overlay par défaut) comme base layer. Pour cela, il vous faut rajouter "isBaseLayer: true" dans la liste de ses options.
Idéalement, j'aurai commencé par tester le service avec une layer WMS simple avant de me risquer avec le WFS, un tantinet plus casse-gueule.


Merci pour cette précision j'ai bien une base layer (j'avais un peu trop nettoyé mon code pour le poster sur le forum)
Je vais tester le "isBaseLayer:true" ca peut être utile !!

Pour info j'ai enfin réussi a obtenir ma france "non écrasé" en Lambert 2 étendu !

J'ai défini la proj dans "options"

Code:

    var options = { 
        projection: new OpenLayers.Projection("EPSG:27582"),
        displayProjection: new OpenLayers.Projection("EPSG:27582"),
        units: "m",
        numZoomLevels: 18,
        maxResolution: 156543.0339,
        maxExtent: new OpenLayers.Bounds(0, 1776000, 1100000, 2700000) 
        };

et je la redéclare pour chaque couche :

Code:

var depWFS = new OpenLayers.Layer.WFS( "dep  WFS","http://192.168.3.85/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/cof/mapfile.map&", {typename: 'dep',projection: new OpenLayers.Projection("EPSG:27582")}, { extractAttributes: true});

Il y a surement des répétitions dans ce code mais pour l'instant ca à l'air de marcher...

Firebug me trouve quand même une erreur :

Code:

uncaught exception: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]"  nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)"  location: "JS frame :: http://192.168.3.85/OpenLayers-2.9/OpenLayers.js :: anonymous :: line 1149"  data: no]
Line 0

mais elle n'est pas très explicite...

Hors ligne

 

#11 Fri 30 April 2010 12:14

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: Openlayers projection lambert II étendu

Code:

OpenLayers-2.9/OpenLayers.js

Cette partie du message d'erreur indique que cela vient du fichier OpenLayers.js

Et pour être précis cette erreur est généré lorsque la requête XMLHttpRequest est envoyée

Code:

nsIXMLHttpRequest.send

Il y a donc eu un problème au moment de la construction de la requête.

Sinon je vous conseille de regarder ces exemples:
http://openlayers.org/dev/examples/wfs-states.html
http://openlayers.org/dev/examples/wfs-protocol.html
http://openlayers.org/dev/examples/wfs- … ction.html

Je pense que vous y trouverez toutes les informations nécessaires pour qu'Openlayers génère une bonne requête.

Cordialement

Hors ligne

 

Pied de page des forums

Powered by FluxBB