#1 Tue 14 April 2009 14:34
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
[OpenLayers] Problème WFS
Bonjour à tous,
Après avoir réussi un affichage en WMS par OpenLayers depuis MapServer, j'aimerais affichier en WFS les mêmes couches.
Donc j'ai redéfini mes fichiers .map et .html mais Firebug m'envoie une erreur de ce type "bounds is null -- var center = bounds.getCenterLonLat();".
Apparemment il s'agit d'une erreur au moment où je fais map.zoomToMaxExtent;
Voici le code HTML :
Code:
<html> <head> <title>Interface Carto Natura 2000</title> <script src="OpenLayers-2.7/lib/OpenLayers.js"></script> <script defer="defer" type="text/javascript"> var map; function main(){ map= new OpenLayers.Map('map', {maxExtent:new OpenLayers.Bounds(427829, 1740836, 579374, 1909383), maxResolution: 'auto', units:'meters', projection:'EPSG:27593'}); map.addControl(new OpenLayers.Control.Scale()); map.addControl(new OpenLayers.Control.MousePosition()); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.addControl(new OpenLayers.Control.EditingToolbar()); var wfs = new OpenLayers.Layer.WFS("communes", "http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/test.map", {typename: 'communes'}, {extractAttributes: true}); map.addLayer(wfs); map.zoomToMaxExtent(); } </script> </head> <body onload="main();"> <div style="width:100%; height:100%" id="map"></div> </body> </html>
et voici le code du mapfile :
Code:
NAME "WFS_server" STATUS ON SIZE 400 300 EXTENT 427829 1740836 579374 1909383 UNITS METERS WEB IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" METADATA "wfs_title" "WFS Demo Server" "wfs_onlineresource" "http://localhost/cgi-bin/mapserv.exe?" "wfs_srs" "EPSG:27593" END END PROJECTION "init=epsg:27593" END LAYER NAME "communes" METADATA "wfs_title" "communes" "gml_featureid" "gid" "gml_include_items" "all" END TYPE POLYGON STATUS ON CONNECTION "user=postgres password=postgres dbname=natura2000 host=localhost" CONNECTIONTYPE POSTGIS DATA "the_geom from communes" PROJECTION "init=epsg:27593" END DUMP TRUE CLASS STYLE COLOR 255 255 205 OUTLINECOLOR 0 0 0 END END END END
Hors ligne
#2 Wed 15 April 2009 09:28
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Personne n'a d'idée d'où peut provenir l'erreur ?
Hors ligne
#3 Wed 15 April 2009 09:46
Re: [OpenLayers] Problème WFS
Code:
http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/test.map
Ne me semble pas très catholique. A priori dans les requêtes passant par Apache, j'ai été habitué à avoir le répertoire htdocs en tant que répertoire courant.
Mais j'imagine que quand tu rentres cette URL dans ton navigateur, tu as bien la carte qui apparait de façon plus que convenable ? Il faut bien chercher ailleurs ou ton problème était là ?
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#4 Wed 15 April 2009 09:52
Re: [OpenLayers] Problème WFS
Jérôme,
Non pas la peine d'avoir un htdocs dans l'url, plutôt dans le chemin (comme pour le mapfile) Le répertoire cgi-bin/ est généralement un alias définie dans la configuration d'Apache.
Par contre ta piste est censée : tester l'url pour voir si les données WFS sont bien renvoyées : http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/test.map?VERSION=1.1.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAME=communes
Si c'est le cas, activé firebug, et regarder les messages d'erreur dans la console, voir regarder le DOM pour voir si les données ont bien été récupérées.
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 Wed 15 April 2009 10:01
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Oui, la carte apparaît bien donc le problème doit être ailleurs (en réponse à Jérôme)
Dernière modification par Maxime31 (Wed 15 April 2009 10:02)
Hors ligne
#6 Wed 15 April 2009 10:04
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Bonjour Yves,
J'ai testé l'URL et Firefox me renvoie ceci : msEvalRegex(): Regular expression error. String (c:/ms4w/Apache/htdocs/projet_test/test.map?VERSION=1.1.0) failed expression test.
Hors ligne
#7 Wed 15 April 2009 10:08
Re: [OpenLayers] Problème WFS
Bonjour,
Je ne voie qu'une erreur potentielle :
Code:
projection: new OpenLayers.Projection("EPSG:27593"),
Ceci peut expliquer l'erreur car OL doit penser qu'il est en WGS84... (sans être sûr de l'explication).
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
#8 Wed 15 April 2009 10:18
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
J'ai modifié la ligne dans mon fichier HTML mais j'ai toujours la même erreur dans Firebug (bounds is null -- var center = bounds.getCenterLonLat(); -- Map.js (ligne 1957))
Quant à l'URL, elle me renvoie toujours la même erreur également.
Hors ligne
#9 Wed 15 April 2009 10:27
Re: [OpenLayers] Problème WFS
Quant à l'URL, elle me renvoie toujours la même erreur également.
Quelle url ? Quelle erreur ?
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
#10 Wed 15 April 2009 10:31
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
J'ai testé l'URL : http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/test.map?VERSION=1.1.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAME=communes
)
Firefox me renvoie ceci : msEvalRegex(): Regular expression error. String (c:/ms4w/Apache/htdocs/projet_test/test.map?VERSION=1.1.0) failed expression test.
Dernière modification par Maxime31 (Wed 15 April 2009 10:32)
Hors ligne
#11 Wed 15 April 2009 10:38
Re: [OpenLayers] Problème WFS
Oups, il y avait deux signes "?", voici la bonne :
Code:
http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/test.map&VERSION=1.1.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAME=communes
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
#12 Wed 15 April 2009 10:43
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Effectivement ça m'avait échappé !
Donc j'ai retesté et Firefox m'envoie ceci :
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?> - <wfs:FeatureCollection xmlns:ms="http://mapserver.gis.umn.edu/mapserver" xmlns:gml="http://www.opengis.net/gml" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver http://localhost/cgi-bin/mapserv.exe?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=communes&OUTPUTFORMAT=text/xml; subtype=gml/3.1.1 http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"> - <gml:boundedBy> - <gml:Envelope srsName="EPSG:27593"> <gml:lowerCorner>427829.000011 1740836.000023</gml:lowerCorner> <gml:upperCorner>579373.999999 1909382.000009</gml:upperCorner> </gml:Envelope> </gml:boundedBy> </wfs:FeatureCollection>
Hors ligne
#13 Wed 15 April 2009 10:56
Re: [OpenLayers] Problème WFS
C'est tout ? Ben voilà le problème, ton serveur WFS ne fonctionne pas Tu es censé obtenir les données !
Par contre, je crois que j'ai fait une autre erreur, la version du standard WFS gérée par MapServer est la 1.0.0 et pas la 1.1.0, ceci dit cela ne doit pas poser de problème.
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
#14 Wed 15 April 2009 11:01
- vdb
- Participant actif
- Lieu: Chambéry
- Date d'inscription: 21 Jun 2006
- Messages: 56
Re: [OpenLayers] Problème WFS
Bonjour Maxime,
Essaie de lire ton WFS via un logiciel tel que Udig. Si ça marche, l'erreur est du côté de ton code client.
Sinon, reprendre le MapFile (à ce propos, il me semble qu'il manque C: dans IMAGEPATH "/ms4w/tmp/ms_tmp/" ).
Enfin, il faut peut etre aussi remettre en cause l'expérience en soi. Chercher à afficher l'intégralité des communes en WFS dans OpenLayers ne marchera jamais.
Tu feras face aux limites classiques des navigateurs qui ne te permettent pas de charger trop d'objets vectoriels en même temps (ordre d'idée : 100).
Si tu veux accéder aux propriétés des objets "commune" sur une carte, une solution classique serait de :
1) afficher une couche WMS représentant ces données communes
2) configurer un controle OpenLayers tel que le récent GetFeature en mode "hover", pourquoi pas avec un protocole WFS sur ta couche communes servie par Mapserver, avec un mapfile dans lequel tu auras spécifié "DUMP TRUE".
Note que ce controle est disponible actuellement dans OpenLayers trunk (et très bientot dans la version 2.8). Si tu es pressé, SVN est ton ami ;-)
HTH,
F.
Hors ligne
#15 Wed 15 April 2009 11:03
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Ok donc normalement ca vient de la configuration dans le mapfile si le serveur WFS ne marche pas, non ?
Je te redonne mon fichier mapfile, je pense avoir rajouté tout ce qu'il faut pour configurer MapServer en WFS mais peut être que qqchose m'a échappé :
Code:
NAME "WFS_server" STATUS ON SIZE 400 300 EXTENT 427829 1740836 579374 1909383 UNITS METERS WEB IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" METADATA "wfs_title" "WFS Demo Server" "wfs_onlineresource" "http://localhost/cgi-bin/mapserv.exe?" "wfs_srs" "EPSG:27593" END END PROJECTION "init=epsg:27593" END LAYER NAME "communes" METADATA "wfs_title" "communes" "gml_featureid" "gid" "gml_include_items" "all" END TYPE POLYGON STATUS ON CONNECTION "user=postgres password=postgres dbname=natura2000 host=localhost" CONNECTIONTYPE POSTGIS DATA "the_geom from communes" PROJECTION "init=epsg:27593" END DUMP TRUE CLASS STYLE COLOR 255 255 205 OUTLINECOLOR 0 0 0 END END END END
Hors ligne
#16 Wed 15 April 2009 11:21
Re: [OpenLayers] Problème WFS
Bonjour,
Comme l'a écrit François :
Code:
IMAGEPATH "c:/ms4w/tmp/ms_tmp/"
Et un petit test :
Code:
./mapserv.exe -v
Pour voir si celui-ci gère le WFS en tant que serveur (je pense qu'il le gère de toute façon).
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
#17 Wed 15 April 2009 11:31
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
En fait, ce que je voudrais faire, c'est pouvoir afficher, superposer ou masquer des couches d'un simple clic avec le LayerSwitcher d'OpenLayers.
Parce que, pour l'instant, je suis arrivé à afficher mes couches en WMS mais je ne peux qu'en voir une à la fois et pas superposer les différentes couches (toujours à partir du LayerSwitcher).
Je suis bien obligé de faire du WFS pour faire ca, non ?
Dernière modification par Maxime31 (Wed 15 April 2009 11:52)
Hors ligne
#18 Wed 15 April 2009 12:08
Re: [OpenLayers] Problème WFS
Bonjour,
Non il suffit de rajouter le paramètre qui va bien : transparent:true dans les options et faire en sorte que l'image de sortie gère la transparence côté serveur WMS (gif ou png).
Voici un exemple de paramètres que tu passer :
Code:
{ layers: [ _name ], transparent: _isTransparent, format: _format }
À adapter bien sur
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
#19 Wed 15 April 2009 12:21
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Ah ben oui effectivement...
Alors WFS permet juste l'accès aux attributs des couches si j'ai bien compris.
En fait, je dois réaliser un outil carto en Intranet pour une collectivité et en fait, on s'est orientés vers une solution de SIG libre sur le Web qui paraissait la plus avantageuse.
Les données (fichiers .shp en général) ont été transférées sur PostGIS et donc le serveur est géré par MapServer et l'interface par OpenLayers.
En gros, il faudrait un semblant de SIG (avec des outils de déplacement, de zoom, de contrôles de couches, de mesure, ...) avec si possible des modifications sur les couches et des recherches attributaires.
Est-ce que le WMS me permet de réaliser ceci (mis à part la recherche attributaire puisque c'est apparemment géré par WFS) ?
Et j'avais entendu parler de WFS-T, c'est quoi exactement ?
Hors ligne
#20 Wed 15 April 2009 12:58
Re: [OpenLayers] Problème WFS
Bonjour,
Un service WMS permet de récupérer les objets géométriques ainsi que leurs attributs.
La recherche attributaire peut se faire au moyen du paramètre FILTER avec un service WFS, ou bien via OL avec le contrôleur dont t'a parlé François plus haut. Il y a d'autre moyen, la meilleure stratégie dépend de ce que tu veux faire exactement : récupérer les attributs d'un objet géométrique à un point X,Y et les afficher dans une pop-up/div sur ta page/carte, réaliser un formulaire pour afficher les données dans la carte avec possibilité de pop up ou pas...
Les services WMS permettent également de récupérer les données attributaires d'une couche avec la requête : GetFeatureInfo
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
#21 Wed 15 April 2009 14:27
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Ok merci pour tous ces renseignements !
Juste pour savoir : est-ce qu'il existe un outil pour OpenLayers permettant de faire un zoom par sélection (cad on trace un rectangle sur la carte et ça zoome dessus) ?
Hors ligne
#22 Wed 15 April 2009 14:37
Re: [OpenLayers] Problème WFS
Ok merci pour tous ces renseignements !
Juste pour savoir : est-ce qu'il existe un outil pour OpenLayers permettant de faire un zoom par sélection (cad on trace un rectangle sur la carte et ça zoome dessus) ?
Je crois que c'est une fonctionnalité par défaut (et activable avec shidt + drag and drop)
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
#23 Wed 15 April 2009 14:58
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Effectivement ! Merci !
Hors ligne
#24 Wed 15 April 2009 15:21
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Encore une dernière question !
Est-ce qu'on peut afficher des dalles orthophoto (au format ecw) sans risque de trop de temps d'attente de chargement à chaque fois ?
Si oui, comment fait-on lorsqu'on a plein de dalles ? Est ce qu'il faut créer une couche WMS par dalle ?
Hors ligne
#25 Wed 15 April 2009 15:29
Re: [OpenLayers] Problème WFS
Encore une dernière question !
Est-ce qu'on peut afficher des dalles orthophoto (au format ecw) sans risque de trop de temps d'attente de chargement à chaque fois ?
Oui si ta version de MapServer a été compilé avec une version de GDAL gérant ce format. D'autre part, dans le cas d'un serveur il faut obligatoirement avoir une licence. Le temps de chargement est très bon. Si tu ne peux pas utiliser ce format à cause de la licence, tu as la possibilité d'utiliser un autre format du même type (jpeg200, jpegecw, etc.)
Si oui, comment fait-on lorsqu'on a plein de dalles ? Est ce qu'il faut créer une couche WMS par dalle ?
Si tu as plein de dalle, l'utilisation de l'ECW perd de son intérêt ! Mais cela ne pose pas de problème, tu n'as qu'une couche WMS a créer dans ton mapfile avec une petite astuce :
Code:
LAYER NAME "macouche" STATUS ON TYPE RASTER TILEINDEX "Referentiel/vers/monfichier/index.shp" TILEITEM "Location" END
Pour créer ce fichier index.shp, tu dois utiliser gdaltindex.
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
#26 Wed 15 April 2009 15:36
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Ok merci !
Je vais essayer de me débrouiller avec tout ça !
Hors ligne
#27 Mon 27 April 2009 10:45
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Ok merci.
Juste je voulais revenir sur l'intégration des mes fichiers orthophoto. J'ai une dizaine de dalles ECW à afficher et j'ai donc utiliser le tile index comme ceci :
Code:
LAYER NAME "ortho50" METADATA "wms_title" "Ortho50" STATUS OFF TYPE RASTER TILEINDEX "C:/test.shp" TILEITEM "C:/" END
J'ai bien crée grâce à gdaltindex, mon fichier test.shp, et mes ecw se se situent directement sur le "c: /" . Cependant, quand je veux afficher la couche, j'ai une erreur qui s'affiche (ItemIndex(): dbase file error). Pourtant dans mon dbf, j'ai un tableau avec une colonne location et des lignes du type "c:/4375.ecw".
Voici comment j'appelle la couche dans mon fichier html :
Code:
var wms8 = new OpenLayers.Layer.WMS("Ortho 50cm", "http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/natura.map", {layers: "ortho50"}); map.addLayer(wms8);
Quelqu'un aurait-il une idée sur l'erreur svp ?
Hors ligne
#28 Mon 27 April 2009 10:49
Re: [OpenLayers] Problème WFS
Bonjour,
TILEITEM "Location"
le paramètre TILEITEM est le nom du champ du dbf qui contient le chemin vers les tuiles.
Par défaut "location" si tu as créé le fichier d'index avec gdal.
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
#29 Mon 27 April 2009 11:50
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème WFS
Effectivement j'avais mal compris le fonctionnement mais la ca marche bien ! Merci
Hors ligne
#30 Mon 10 August 2009 12:37
- Sfox
- Participant occasionnel
- Date d'inscription: 29 Jun 2009
- Messages: 24
Re: [OpenLayers] Problème WFS
Bonjour,
dans le même contexte, est ce qu'il est possible d'afficher des infos-bull avec un WMS/openlayers? est-il possible aussi, de faire de l'édition d'entité géométrique (création d'entités) avec un WMS (est ce qu'il y a une astuce pour cela)?
Merci d'avance.
Hors ligne