#1 Mon 24 June 2013 18:01
- Gustry
- Participant occasionnel
- Lieu: Besançon
- Date d'inscription: 6 Mar 2013
- Messages: 12
WFS et Openlayers
Bonjour,
J'essaye d'afficher ma couche WFS, que j'ai faite avec mapserver, dans OpenLayer. Cela marche très bien dans qgis (c'est déjà une chose !).
Code:
layer = new OpenLayers.Layer.Vector("WFS", { strategies: [new OpenLayers.Strategy.BBOX()], protocol: new OpenLayers.Protocol.WFS.v1_0_0({ url: "http://127.0.0.1/cgi-bin/map", geometryName: "way", featureType: "schoolPoint", featurePrefix: "" }), styleMap: new OpenLayers.StyleMap({ strokeWidth: 3, strokeColor: "#ffffff" }) }); map.addLayer(layer); console.log(layer);
Malheureusement, Openlayer ne fait aucune requête WFS lors du chargement :
No query information to decode. QUERY_STRING is set, but empty.
Voici ce que je peux lire dans Firebug lors du chargement. Les paramètres sont vides.
Même en lisant la doc, je n'ai pas compris ce qu'était le featurePrefix. J'ai essayé de le mettre en commentaire, mais même résultat.
Je mets un morceau du mapfile :
Code:
LAYER NAME "schoolPoint" STATUS ON CONNECTIONTYPE postgis CONNECTION "user=etienne password=azerty dbname=gis host=localhost port=5432" DATA "way from (SELECT osm_id, way, name FROM planet_osm_point WHERE \"amenity\"='school') as query using unique osm_id" TYPE POLYGON METADATA "wfs_title" "schoolPoint" "wfs_srs" "EPSG:3857" "gml_include_items" "all" "gml_featureid" "osm_id" "wfs_enable_request" "*" END DUMP TRUE END
Merci d'avance
Etienne
Dernière modification par Gustry (Mon 24 June 2013 21:12)
Hors ligne
#2 Mon 24 June 2013 18:33
Re: WFS et Openlayers
Etienne,
Il doit te manquer le chemin vers le mapfile par contre le message que tu indiques est typiquement un message d'erreur de MapServer ! Es tu certain qu'il n'y a pas de requête envoyé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
#3 Mon 24 June 2013 19:25
- Gustry
- Participant occasionnel
- Lieu: Besançon
- Date d'inscription: 6 Mar 2013
- Messages: 12
Re: WFS et Openlayers
Le chemin vers le mapfile est dans un fichier python cgi :
Code:
#!/usr/bin/python import mapscript req = mapscript.OWSRequest() req.loadParams() map = mapscript.mapObj('/home/etienne/geocameroun/osm.map') map.OWSDispatch(req)
Et j'ai exactement cette adresse dans Qgis :
Et elle fonctionne très bien.
La seul requête dans firebug que je vois, c'est le message d'erreur en pièce jointe. Aucun paramètre n'est passé.
Merci d'avance.
Hors ligne
#4 Mon 24 June 2013 19:37
Re: WFS et Openlayers
Bonjour,
Les variables sont envoyé en POST, tu devrais les voir dans Firebug, mais tu peux aussi forcer temporairement OpenLayers à envoyer les paramètres avec la méthode GET. (je pense qu'il suffit de rajouter method: 'get' dans ton objet Layer (je te laisse le soin de retrouver où )
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 Mon 24 June 2013 21:12
- Gustry
- Participant occasionnel
- Lieu: Besançon
- Date d'inscription: 6 Mar 2013
- Messages: 12
Re: WFS et Openlayers
Mais il n'y aucun paramètre ajouté à mon url, que cela soit en POST ou en GET dans Firebug.
J'ai donc essayé de mettre mes requêtes en GET avec cette astuce pour faire mes requêtes :
Code:
wfs_options = { url: 'http://127.0.0.1/cgi-bin/map', params: { request: "GetFeature", service: "wfs", version: "1.0.0", typeName: "schoolPolygone" }, format: new OpenLayers.Format.GML({ geometryName: "way" }) } layer = new OpenLayers.Layer.Vector('WFS', { strategies: [new OpenLayers.Strategy.Fixed()], visibility: true, protocol: new OpenLayers.Protocol.HTTP(wfs_options), });
Cette fois, la requête s'éxecute bien dans firebug. J'ai plein de GML dans l'onglet "réponse".
Mais rien ne s'affiche sur la carte.
La commande firebug "layer['features']" me renvoit undefined.
J'ai essayé la strategie BBOX, mais cette-fois-ci, j'ai une autre erreur :
Reload the page to get source for: http://127.0.0.1/cgi-bin/map?request=Ge … 6849299467
Si j'ouvre cette URL dans mon navigateur, j'obtiens encore une autre erreur :
Code:
<wfs:FeatureCollection xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd http://mapserver.gis.umn.edu/mapserver http://127.0.0.1/cgi-bin/map?SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=schoolPolygone&OUTPUTFORMAT=XMLSCHEMA"><gml:boundedBy><gml:null>missing</gml:null></gml:boundedBy></wfs:FeatureCollection>
Je persiste avec ce WFS !
Dernière modification par Gustry (Mon 24 June 2013 21:13)
Hors ligne
#6 Thu 27 June 2013 08:35
- Gustry
- Participant occasionnel
- Lieu: Besançon
- Date d'inscription: 6 Mar 2013
- Messages: 12
Re: WFS et Openlayers
Bonjour,
Comme c'est mon premier WFS, est-ce possible de jeter un coup d'oeil au mapfile, histoire de le valider :
Code:
MAP NAME "Test OSM" EXTENT 920000 180000 1805000 1470000 SIZE 800 400 IMAGECOLOR 128 128 255 PROJECTION "init=epsg:3857" END WEB METADATA WFS_TITLE "OSM WFS" WFS_ABSTRACT "OSM Data from osm2pgsql" WFS_ACCESSCONSTRAINTS "none" "wfs_enable_request" "*" WFS_SRS "EPSG:3857" END END LAYER NAME "schoolPolygone" STATUS ON CONNECTIONTYPE postgis CONNECTION "user=etienne password=azerty dbname=gis host=localhost port=5432" DATA "way from (SELECT osm_id, way, name FROM planet_osm_polygon WHERE \"amenity\"='school') as query using unique osm_id" TYPE POLYGON METADATA "wfs_title" "schoolPolygone" "wfs_srs" "EPSG:3857" "gml_include_items" "all" "gml_featureid" "osm_id" "wfs_enable_request" "*" END DUMP TRUE END LAYER NAME "schoolPoint" STATUS ON CONNECTIONTYPE postgis CONNECTION "user=etienne password=azerty dbname=gis host=localhost port=5432" DATA "way from (SELECT osm_id, way, name FROM planet_osm_point WHERE \"amenity\"='school') as query using unique osm_id" TYPE POINT METADATA "wfs_title" "schoolPoint" "wfs_srs" "EPSG:3857" "gml_include_items" "all" "gml_featureid" "osm_id" "wfs_enable_request" "*" END DUMP TRUE END END # MAP
Certains mapfile ont plus d'informations dans la section "web", mais j'ai essayé de supprimer le maximum.
Merci
Hors ligne
#7 Thu 27 June 2013 09:25
Re: WFS et Openlayers
Bonjour,
Pour le valider : http://localhost/cgi/mapserv?map=blabla/monmapfile.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities
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