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 12 November 2012 18:21

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

affichage wfs mapserver openlayers

Bonjour,

Comme beaucoup d'utilisateur, je bloque sur l'affichage de donnée wfs dans openlayers via mapserver. Ayant parcouru de nombreux sujets sans parvenir à afficher mes données, je crée un nouveau sujet (encore un).

En suivant le lien suivant, je suis parvenu à afficher le fond de plan OSM dans le système de coordonnées que j'utilise. Je pensais donc que le plus dur serait fait.

http://www.forumsig.org/showthread.php?t=23650

Cependant, si firebug ne me retourne pas d'erreur, aucune donnée wfs n'est affichée.
En saisissant dans la console map.layers, je vois que features (de mon calque wfs) ne contient aucune données.

Si je test l'url et le serveur wfs dans qgis, aucun problème.

voici le code javascript

Code:

function init() {
        var options = {
            projection: new OpenLayers.Projection("EPSG:900913"),
            displayProjection: new OpenLayers.Projection("EPSG:3949"),
            units: 'm',
            maxResolution: "auto",
            maxExtent: new OpenLayers.Bounds(1424700.0,8169000.0,1451156.0,8188335.0)
        };
        map = new OpenLayers.Map('basicMap',options);
        
        var mapnik         = new OpenLayers.Layer.OSM();
        var epsg4326     = new OpenLayers.Projection("EPSG:4326");   // Transform from WGS 1984
        var epsg3949     = new OpenLayers.Projection("EPSG:3949");   // Transform from rgf93cc49
        var epsg900913    = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
        var position       = new OpenLayers.LonLat(-0.57,48.75).transform( epsg4326, epsg900913);
        var zoom           = 12; 
 
        map.addLayer(mapnik);
        map.setCenter(position, zoom );
        
        test = new OpenLayers.Layer.WFS("test",
            "http://serveur/cgi-bin/mapserv.exe?map=chemin/economie/economie.map&",
            {typename: 'BATIMENT_ENTREPRISE'}, 
            {extractAttributes: true},
            {projection: new OpenLayers.Projection("EPSG:3949")}
        );
        map.addLayer(test);

        map.addControl(new OpenLayers.Control.LayerSwitcher());
        map.addControl(new OpenLayers.Control.MousePosition());
        
    
      }

J'ai essayé plusieurs façon pour charger les données dans openlayers sans succès.


A priori le mapfile est ok, je parviens à afficher les données en wms. les métadonnées pour le wfs sont saisies.

Je ne vois pas où ça cloche. sad

Merci d'avance pour votre aide.

Hors ligne

 

#2 Tue 13 November 2012 10:31

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

Re: affichage wfs mapserver openlayers

Bonjour,

En plaçant tous les fichiers sur le serveur ça avance légèrement. J'obtiens une réponse (problème de proxy ??) Cependant ca ne fonctionne toujours pas.
j'obtiens une réponse xml avec entre autre :

Code:

<gml:boundedBy><gml:null>missing</gml:null></gml:boundedBy>

le paramètre bbox de la requète wfs utilise des coordonnées qui ne correspondent pas à mon système de projection, mais je ne vois comment corriger cela.

Code:

bbox    -101059.12766324,6197386.5644715,-25845.091841094,6267708.6304839

le code lié au calque wfs :

Code:

        var test2 = new OpenLayers.Layer.Vector(
            "test2", {
            //    styleMap: styles,
                strategies: [new OpenLayers.Strategy.BBOX()],
                protocol: new OpenLayers.Protocol.HTTP({
                    url:  "http://serveur/cgi-bin/mapserv.exe?map=E:/signet/map/economie/economie.map&",
                    params: {
                        typename: "BATIMENT_ENTREPRISE",
                        service: "WFS",
                        format: "WFS",
                        version: "1.0.0",
                        request: "GetFeature",
                        srs: "EPSG:3949"
                    },
                format: new OpenLayers.Format.GML()
                })
                //,{extractAttributes: true}
        })
        map.addLayer(test2);

help

Dernière modification par jonathan (Tue 13 November 2012 11:23)

Hors ligne

 

#3 Tue 13 November 2012 11:16

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

Re: affichage wfs mapserver openlayers

Bonjour,

Tu interroges ton service en 3949, ta carte s'affiche en 4326 ou 900913.

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

 

#4 Tue 13 November 2012 11:31

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

Re: affichage wfs mapserver openlayers

Bonjour,

Merci pour ta réponse.

Quel que soit le code epsg (3949, 900913, 4326) que je donne en paramètre au layer, cela ne change rien.
Étant données les options de ma carte (projection et displayprojection), je pensais en finir avec ces problèmes.

Dernière modification par jonathan (Tue 13 November 2012 11:41)

Hors ligne

 

#5 Tue 13 November 2012 14:18

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

Re: affichage wfs mapserver openlayers

ok,

Merci beaucoup,
Je ne modifiais pas le bon paramètre. Il suffisait d'inverser les codes entre projection et displayProjection dans les options de la map. :\
Je pensais pouvoir projeter en cc49, faire l'inverse quoi.

heureusement qu'il y a des forums comme georezo pour relever la tête du guidon.

Dernière modification par jonathan (Tue 13 November 2012 14:24)

Hors ligne

 

Pied de page des forums

Powered by FluxBB