#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
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
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
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
... 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
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