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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Mon 24 June 2013 19:37

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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ù wink )

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 :


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 ! smile

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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

 

Pied de page des forums

Powered by FluxBB