#1 Thu 09 December 2010 14:42
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
[OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour à tous,
je souhaiterai afficher avec OpenLayers, une layer contenu dans un mapfile en WFS.
J'ai lu quelque fils de discussion sur ce forum évoquant des soucis WFS avec du Geoserver, mais cela ne m'a pas vraiment aidé.
Le but ultime étant de gérer par les listeners, l'enregistrement SQL des WFS.
Cependant, je n'y arrive déjà pas à afficher une layer en WFS.
Ci-dessous le code. Je fais appel à 2 layers, un en WMS et un autre en WFS.
L'appel seul du WMS se passe sans souci.
Quand j'appelle les 2, rien ne s'affiche sur ma carte.
J'ai suivi le tuto de geotribu, mais comme cela est évoqué dans les commentaires déposés sur cet article, Openlayers.Layer.WFS ne fonctionne pas. J'ai le message d'erreur "OpenLayers.Layer.WFS isn't a constructor ...". J'ai employé Vector à la place, mais sans savoir précisément le rôle de chaque paramètre.
Code:
map = new OpenLayers.Map('map', { scales: [6400000, 3200000, 1600000, 800000, 400000, 200000, 100000, 50000, 25000, 15000, 10000, 5000, 3000], minScale: 6400000, maxScale: 3000, projection: new OpenLayers.Projection("EPSG:27572"), units: 'm', maxExtent: new OpenLayers.Bounds(paramXmin,paramYmin,paramXmax,paramYmax), controls: [] }); map.addControl(new OpenLayers.Control.PanZoomBar()); //affiche la barre de niveau de zoom & de déplacement //affiche les coordonnées lors du survol de la souris map.addControl (new OpenLayers.Control.MousePosition({prefix:"Position souris : X : ",suffix:"m",separator:"m, Y : ",numDigits : 2, div: document.getElementById("positionSouris")})); map.addControl(new OpenLayers.Control.Navigation());//apporte les fonctionnalités Double clic, roulette avant/arrière, shift + rectangle de sélection map.addControl(new OpenLayers.Control.ScaleBar({'prefix':"Barre d'échelle : ","title":"TITRE",div:document.getElementById("scaleBar"),abbreviateLabel: true})); //map.addControl(new OpenLayers.Control.DrawFeature(wmsLayerCommunes,OpenLayers.Handler.Polygon,{'displayClass': 'olControlDrawFeaturePolygon'})); alert('avant addlayer'); var wmsBaseLayer = new OpenLayers.Layer.WMS("Scan25", wmsMapFile, { srs: 'EPSG:27572', width: '600',height: '450', layers: 'scan25', format: 'image/jpeg', "onMapResize":function() {alert('map resize dans wmsBaseLayer');}, "loadstart":function(){ChargementCouche();}, "loadend":function() {ChargementCoucheTerminee();} }, {isBaseLayer: true,visibility:true} ); var wfsLayerParcellesCulturales = new OpenLayers.Layer.Vector( "Parcelles culturales", { strategies: [new OpenLayers.Strategy.BBOX()], projection: new OpenLayers.Projection("EPSG:27572"), protocol: new OpenLayers.Protocol.WFS({ srsName: "EPSG:27572", url: "http://IPduServeur/cgi-bin/wfs?map=CheminVersMonMapFile/sc_test.map&", featureType: "parcelles_poly" }) } ); map.addLayers([wmsBaseLayer,wfsLayerParcellesCulturales]);
Voici le mapfile
Code:
# # Start of map file # # $Id: gmap75.map,v 1.21 2001/05/17 19:19:16 daniel Exp $ # NAME sc_parcelles STATUS ON SIZE 600 450 SYMBOLSET ../etc/symbols.sym EXTENT 0 2288000 801000 2681000 UNITS METERS SHAPEPATH "/usr/share/carto/" IMAGECOLOR 255 255 255 FONTSET ../etc/fonts.txt IMAGETYPE jpeg OUTPUTFORMAT NAME jpeg DRIVER "GD/JPEG" MIMETYPE "image/jpeg" IMAGEMODE RGB EXTENSION "jpg" FORMATOPTION "QUALITY=80" END # # Start of web interface definition # WEB MINSCALE 500 MAXSCALE 500000 # # On Windows systems, /tmp and /tmp/ms_tmp/ should be created at the root # of the drive where the .MAP file resides. # METADATA "wfs_title" "WFS" "wfs_onlineresource" "http://IPserveur/cgi-bin/wfs?" ## Recommended "wfs_srs" "epsg:27572" ## Recommended "wfs_abstract" "This describes my WFS service." ## Recommended END IMAGEPATH "/var/www/tmp/" IMAGEURL "/tmp/" LOG "/tmp/gmap.log" END # # Start of reference map # REFERENCE IMAGE images/aisne.gif EXTENT 625000 2400000 750000 2600000 STATUS ON COLOR -1 -1 -1 OUTLINECOLOR 255 0 0 SIZE 120 90 END # # Start of legend # LEGEND KEYSIZE 18 12 LABEL TYPE BITMAP SIZE MEDIUM COLOR 0 0 89 END STATUS ON TEMPLATE "legend.html" END # # Start of scalebar # SCALEBAR IMAGECOLOR 255 255 255 LABEL COLOR 0 0 0 SIZE SMALL END SIZE 200 5 COLOR 255 255 255 BACKGROUNDCOLOR 0 0 0 OUTLINECOLOR 0 0 0 UNITS kilometers INTERVALS 4 STATUS ON END QUERYMAP STYLE HILITE COLOR 255 255 0 END PROJECTION "init=epsg:27572" ##recommended END # # Start of layer definitions # LAYER NAME "parcelles_poly" METADATA "DESCRIPTION" "Parcelles culturales" "RESULT_FIELDS" "idparcelleculturale idexploitation nom millesime" "FILTERING" "idexploitation millesime" "wfs_title" "parcelles_poly" "wfs_srs" "EPSG:27572" "gml_include_items" "all" ## Optional (serves all attributes for layer) "gml_featureid" "ID" ## REQUIRED #"LEGENDE "parcelles_poly" #WMS_SRS "EPSG:27572" #WMS_NAME "parcelles_poly" #WMS_ABSTRACT "Parcelles poly" END DUMP TRUE TYPE POLYGON STATUS ON CONNECTIONTYPE postgis CONNECTION "host=*** dbname=*** user=*** password=***" DATA "geom from ***" FILTER "idexploitation = *** AND millesime=****" LABELITEM "nom" SIZEUNITS pixels CLASS NAME "Parcelles" OUTLINECOLOR 255 255 0 COLOR 255 102 0 LABEL COLOR 0 0 200 FONT arial-italic TYPE truetype SIZE 8 BACKGROUNDCOLOR 255 255 255 POSITION cr PARTIALS TRUE MAXSIZE 20 MINSIZE 4 #OUTLINECOLOR 255 255 255 END TEMPLATE "ttt_query.html" END TRANSPARENCY 20 PROJECTION "init=epsg:27572" ##recommended END END # layer #LAYER # NAME "parcelles_poly_outline" END # Map File
N'hésitez pas si j'ai oublié de vous donner des informations.
Je vous remercie d'avance de vos aides/suggestions.
Hors ligne
#2 Thu 09 December 2010 15:01
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
Rapidement : pour reprojeter des données en lambert 2 étendue (new OpenLayers.Projection("EPSG:27572"), il faut au moins la bibliothèque proj4js.js dans le fichier html. Est ce le cas ?
Il faut aussi s'assurer que l'hôte (dans l'url) lors de la l'appel de la page html soit identique que celui de l'url du WFS.
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 Thu 09 December 2010 15:02
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
PS : vérifie avec Firebug si les données sont bien chargées : http://georezo.net/wiki/main/logiciels/ … rs/firebug
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 Thu 09 December 2010 15:58
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour Yves et merci pour les pistes. Je vais exploiter cela.
Je n'avais pas le fichier proj4js.js inclus. Je viens de le télécharger. Je vais essayer.
Sinon, quand j'appele mon fichier html (enfin php), j'appelais le nom d'hôte du serveur, et dans mon code javascript, c'était l'adresse ip du serveur.
J'ai appelé mon fichier html (enfin pgp) avec l'adresse ip, mais cela ne change rien.
J'ai toujours mon firebug activé, mais je n'ai aucune erreur en fait.
Et en utilisant la fonction "inspecter", je vois que dans mon div devant contenir la carte, il n'y a aucune tuile !
C'est grave docteur Yves ?
Je vais include proj4js.js, je poste à nouveau juste après avoir essayé.
Hors ligne
#5 Thu 09 December 2010 16:46
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Alors, j'ai téléchargé le zip de proj4js
J'ai extrait le fichier proj4js.js du répertoire lib, pour le mettre sur mon serveur, et j'y fais appel dans mon code.
Cela me génère des erreurs, comme le fait qu'il manque les fichiers"defs/EPSG27572.js" et "projCode/lcc.js".
J'ai regardé dans le zip de proj4js que j'ai téléchargé, il n'existe pas de EPSG27572.
Je me pose aussi la question suivante :
Suis-je réellement obligé d'utiliser le paramètre "projection" dans mon constructeur OpenLayers.Layer.Vector ?
En fait, j'ai utilisé plusieurs fois new OpenLayers.Projection("EPSG:27572") pour mon objet map dans d'autres codes, et je n'avais pas eu de souci spécifique.
En fait j'ai du 27572, et je reste toujours en 27572.
J'ai testé mon wfs sur quantum GIS en ajoutant un serveur WFS et cela fonctionne.
Il y a des choses que je ne dois pas bien faire dans mon code.
Hors ligne
#6 Thu 09 December 2010 17:29
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonsoir,
Ok si tu utilises la projection lambert 2 étendue dans toutes tes couches tu n'as qu'à la définir dans l'objet map etpifetout comme dirait l'autre.
concernant firebug, dans ton code tu rajoutes ceci :
Code:
console.log(map) console.log(vector)
Et tu regardes le contenu de ton objet vector (est ce que les donnés sont stockés ? etc.)
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
#7 Thu 09 December 2010 18:39
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonsoir,
J'ai regardé dans le zip de proj4js que j'ai téléchargé, il n'existe pas de EPSG27572.
Pour le récupérer, il faut aller sur http://spatialreference.org, chercher 27572 et cliquer sur le résultat. Vous verrez "Proj4js format", vous cliquez dessus puis enregistrez la page dans un fichier texte nommé EPSG27572.js et le placez dans le répertoire defs.
Cordialement
ThomasG
Hors ligne
#8 Fri 10 December 2010 08:43
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
Bonsoir,
J'ai regardé dans le zip de proj4js que j'ai téléchargé, il n'existe pas de EPSG27572.
Pour le récupérer, il faut aller sur http://spatialreference.org, chercher 27572 et cliquer sur le résultat. Vous verrez "Proj4js format", vous cliquez dessus puis enregistrez la page dans un fichier texte nommé EPSG27572.js et le placez dans le répertoire defs.
Cordialement
ThomasG
Les fichiers sont égtalement dans le trac du projet ainsi que d'autres projection française.
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
#9 Fri 10 December 2010 14:15
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour à vous 2,
alors le console.log(map) donne un bon résultat :
Object { tileSize=w=256,h=256, maxExtent=left-bottom=(630000,2410000) right-top=(750000,2550000), more...}
par contre, le consol.log(wfsLayerParcellesCulturales) donne le résultat :
undefined
Après avoir fait des alert avant et après la déclaration du --> new OpenLayers.Layer.Vector
J'ai le "alert" avant mais le "alert" après ne s'affiche pas, l'exécution doit s'arrêter.
Mais dans ce cas, je devrai avoir une erreur non ? Hors, je n'en vois aucune dans ma console Firebug !
Etrange non ?
Merci pour la précision de l'EPSG27572.js
Faudrait-il que j'essaie de l'inclure et de retester ?
Merci d'avance.
Dernière modification par sigdu80 (Fri 10 December 2010 14:30)
Hors ligne
#10 Fri 10 December 2010 15:18
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
J'ai déclaré directement dans la console de firebug, la déclaration du layer WFS "wfsLayerParcellesCulturales".
J'obtiens le message d'erreur suivant :
"Unsupported WFS version: 1.0.0"
Pourtant, quand j'ai testé dans Quantum GIS, je n'ai eu aucun problème.
Même en ajoutant &SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature dans l'url dans la déclaration du layer, cela ne change rien.
Voici le début du fichier xml restitué quand j'ai fait le test pour savoir si l'on pouvait l'exploiter en tant que serveur WFS :
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?> - <WFS_Capabilities version="1.0.0" updateSequence="0" xmlns="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd"> - <!-- MapServer version 5.2.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE --> - <Service> <Name>MapServer WFS</Name> <Title>WFS Demo Server</Title> <OnlineResource>http://xxx.xxx.xxx.xxx/cgi-bin/wfs?</OnlineResource> </Service>
Dernière modification par sigdu80 (Fri 10 December 2010 15:30)
Hors ligne
#11 Fri 10 December 2010 15:37
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Peux tu essayer en définissant une version à 1.1.0 dans OpenLayers. Ce texte est renvoyé par le constructeur WFS d'OpenLayers :
Code:
16 OpenLayers.Protocol.WFS = function(options) { 17 options = OpenLayers.Util.applyDefaults( 18 options, OpenLayers.Protocol.WFS.DEFAULTS 19 ); 20 var cls = OpenLayers.Protocol.WFS["v"+options.version.replace(/\./g, "_")]; 21 if(!cls) { 22 throw "Unsupported WFS version: " + options.version; 23 } 24 return new cls(options); 25 };
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 Fri 10 December 2010 15:45
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Toujours directement dans la console Firebug, j'ai donc recollé l'appel du constructeur Vector, en précisant la version 1.1.0 :
Code:
wfsLayerParcellesCulturales = new OpenLayers.Layer.Vector( "Parcelles culturales", { strategies: [new OpenLayers.Strategy.BBOX()], //projection: new OpenLayers.Projection("EPSG:27572"), protocol: new OpenLayers.Protocol.WFS({ //srsName: "EPSG:27572", version: "1.1.0", url: "http://IPduServeur/cgi-bin/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&map=CheminVersLeMapfile/sc_test.map&", featureType: "parcelles_poly" }) } ); //console.log(map); console.log(wfsLayerParcellesCulturales);
Il me répond :
"Unsupported WFS version: 1.1.0"
Hors ligne
#13 Fri 10 December 2010 15:47
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Cette partie là ne sert à rien SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature car OpenLayers se charge de rajouter les bons paramètres.
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 Fri 10 December 2010 15:52
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
C'est noté. Je l'ai enlevé.
J'ai toujours le même message d'erreur.
Normalement, en version 1.0.0, cela devrait fonctionner compte-tenu des précisions obtenues dans le fichier xml :
Code:
WFS_Capabilities version="1.0.0"
Qu'en penses-tu ?
Je récapitule si certains lecteurs souhaitent un résumé bref : le problème se situe dans l'objet OpenLayers.Protocol.WFS (message d'erreur : "Unsupported WFS version: 1.0.0") :
Code:
var tmpWFS = new OpenLayers.Protocol.WFS({ //srsName: "EPSG:27572", version: "1.1.0", url: "http://IPduServeur/cgi-bin/wfs?map=CheminVersLeMapfile/sc_test.map&", featureType: "parcelles_poly" });
Dernière modification par sigdu80 (Fri 10 December 2010 16:08)
Hors ligne
#15 Fri 10 December 2010 16:11
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
J'en pense qu'OpenLayers n'arrive pas à lire ou à comprendre ce que renvoie le serveur WFS. Probablement parce que l'objet WFS est mal instancié.
Il faudrait regarder plus en détail un ou 2 exemples d'OL sur l'utilisation de service WFS.
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
#16 Fri 10 December 2010 16:52
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Oui, je vais essayer de regarder des exemples d'utilisation sur le site d'openlayers, je n'aurai pas d'autres sites web ayant des exemples.
J'ai ajouté "wfs_version" "1.0.0" dans le metadata du bloc WEB et du bloc "LAYER" qui m'intéresse mais cela ne change rien.
Je répondrai dans les 1-2h qui viennent.
Merci en tous cas Yves pour ton aide.
Hors ligne
#17 Fri 10 December 2010 17:48
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Je me demandais s'il n'y avait pas un souci de communication entre mon mapfile et l'appel de mon layer en mode WFS.
Mais j'ai recopié la déclaration WFS d'un exemple provenant du site officiel d'openlayers directement dans la console firebug :
http://openlayers.org/dev/examples/wfs-filter.html
Code:
var jessaie= new OpenLayers.Protocol.WFS({ url: "http://demo.opengeo.org/geoserver/wfs", featureType: "tasmania_roads", featureNS: "http://www.openplans.org/topp", });
et j'obtiens le même message d'erreur :
"Unsupported WFS version: 1.0.0"
Étrange non ?
Dernière modification par sigdu80 (Fri 10 December 2010 17:55)
Hors ligne
#18 Fri 10 December 2010 18:14
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonsoir,
Vous cherchez à utiliser une déclaration WFS pour se connecter à Geoserver alors que vous utilisez Mapserver. Or il y a quelques différences dans les paramètres à passer.
Voir dans le topic chez nos "voisins" http://www.forumsig.org/showthread.php?t=28034
Cordialement
ThomasG
Hors ligne
#19 Fri 10 December 2010 18:35
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour Thomas G,
Il faut que je revérifie les paramètres dans mon mapfile alors. Désolé des étourderies, mais j'avoue être en train de patauger et de paniquer.
Je vais revoir cette partie.
Il s'agirait de paramètres non renseignés dans mon mapfile ?
Je repars avec un OpenLayers.Layer.WFS donc.
J'ai une réponse. Je n'ai plus de message d'erreur, et l'exécution du code javascript au chargement de mon document HTML se déroule correctement.
Je regarde dans la console firebug le GET de ce layer en mode WFS.
J'ai le message suivant :
Code:
Erreur d'analyse XML : aucun élément trouvé Emplacement : moz-nullprincipal:{ba88269f-0db8-486f-8d45-fa0bf68e8fa2} Numéro de ligne 1, Colonne 1 : ^
Les paramètres envoyés en GET sont :
Code:
BBOX 530666.75810662,2373000.06858,869333.24189338,2626999.93142 REQUEST GetFeature SERVICE WFS SRS EPSG:27572 TYPENAME parcelles_poly VERSION 1.0.0 map /var/www/xxx/include/mapfiles/editeur-cartographique/sc_test.map
J'ai collé cet url dans un navigateur internet, il me génère un fichier avec toutes les infos importantes.
Je peux décrire ce contenu si cela peut vous aiguiller. Dîtes moi.
Dernière modification par sigdu80 (Mon 13 December 2010 11:39)
Hors ligne
#20 Mon 13 December 2010 12:21
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour à tous,
mon wfs s'affiche correctement !
Et voilà ce que j'ai changé :
Code:
var tmpWFS = new OpenLayers.Layer.WFS ( "Test", "http://[b]IPduServeur[/b]/cgi-bin/wfs?map=CheminVersLeMapfile/sc_test.map&", { typename:'parcelles_poly' } , { extractAttributes:true } );
Code:
var tmpWFS = new OpenLayers.Layer.WFS ( "Test", "http://[b]NomDHôteDuServeur[/b]/cgi-bin/wfs?map=CheminVersLeMapfile/sc_test.map&", { typename:'parcelles_poly' } , { extractAttributes:true } );
Je n'avais fait que du WMS jusqu'à présent, et je mettais toujours l'adresse ip du serveur.
Le WFS doit respecter le Same Origin Policy a priori.
Et après coup, comme les données peuvent être potentiellement modifiées, cela se comprend.
Donc, il fallait entrer le nom d'hôte pour respecter cette règle (l'adresse ip ne convient pas).
Dîtes moi s'il manque des explications car qui sait, çà pourrait servir à d'autres personnes (même les experts Yves et ThomasG qui m'ont été d'une aide précieuse peuvent)
Merci à vos aides précieuses, je continue d'avancer, et sûrement à bientôt car j'aurai sûrement d'autres obstacles à franchir.
Dernière modification par sigdu80 (Mon 13 December 2010 18:55)
Hors ligne
#21 Mon 13 December 2010 13:41
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
Donc, il fallait entrer le nom d'hôte pour respecter cette règle (l'adresse ip ne convient pas).
Je n'avais peut être pas été assez précis dans ma réponse :
Il faut aussi s'assurer que l'hôte (dans l'url) lors de la l'appel de la page html soit identique que celui de l'url du WFS.
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
#22 Mon 13 December 2010 17:06
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
oui, c'est vrai !
En tous cas, avec le message d'erreur que j'avais, je me voyais bien mal embarqué !
Merci encore. A très bientôt sur les forums.
Hors ligne
#23 Mon 13 December 2010 18:28
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Par contre,
j'essaie d'avancer et j'ai besoin d'avoir les events sur les features, pour ensuite, les enregistrer moi-même dans ma base PostgreSQL.
Je vais devoir utiliser OpenLayers.Layer.Vector surtout qu'il est dit au sujet de OpenLayers.Layer.WFS (Deprecated. To be removed in 3.0. Instead use OpenLayers.Layer.Vector with a Protocol.WFS and one or more Strategies.).
Je sais, je ne sais pas ce que je veux :-) C'est surtout que je navigue à vue.
Code:
wfs1 = new OpenLayers.Layer.Vector('Test', { strategies: [new OpenLayers.Strategy.BBOX()], protocol: new OpenLayers.Protocol.WFS({ url: "http://Nom_d_hote_du_serveur/cgi-bin/wfs?map=/cheminVersLeMapfile/editeur-cartographique/sc_test.map&", featureType: 'parcelles_poly'//, //featureNS: 'http://mapserver.gis.umn.edu/mapserver' }) });
J'ai mis bien le nom d'hôte, et contrairement à la dernière fois, je n'ai plus d'erreur, mais par contre, je ne vois pas mes features à l'écran.
Le GET issu du OpenLayers.Layer.Vector renvoie plein de résultats pourtant.
J'ai fait dans la console de firebug un :
Code:
document.write(wfs1);
L'objet existe bien.
Par contre, j'ai été voir le tableau features présent dans wfs1, il est vide ! Ce n'est pas normal non ?
Merci d'avance et bonne soirée.
Dernière modification par sigdu80 (Mon 13 December 2010 19:26)
Hors ligne
#24 Tue 14 December 2010 15:49
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
j'ai décommenté featureNS, et cela s'affiche à présent.
Maintenant, j'ai un autre problème (eh oui, c'est éternel !).
Ma map se charge bien, mes layers s'affichent bien aussi.
Ensuite, suite à un choix dans une liste déroulante, je veux ajouter (map.addLayer) un layer en wfs.
Et cela ne fonctionne pas correctement.
Il n'y a aucune erreur, mais je ne vois aucun traitement GET ou POST se produire.
par contre, si je fais un :
Code:
document.write(map);
Je regarde dans le paramètre "layers", ma layer wfs lancé après avoir fait un choix dans la liste déroulante est bien présente !
Dîtes moi si vous avez besoin d'une information supplémentaire pour m'aider.
Hors ligne
#25 Tue 14 December 2010 15:51
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
Peut-être que recharger la map résoudra le problème map.redraw().
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 Tue 14 December 2010 17:34
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Merci Yves.
il fallait effectivement utiliser une méthode redraw, mais plutôt sur la layer en fait.
Donc, sur l'évènement onchange de la liste déroulante, je fais un map.removeLayer() du layer précédemment chargé par cette liste déroulante, puis un :
Code:
layerEnCours.redraw();
Hors ligne
#27 Wed 15 December 2010 10:57
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: [OpenLayers, MapServer, WFS] Affichage layer WFS
Bonjour,
Le redraw sur la layer affichait bien la nouvelle layer à insérer. Mais dès que j'effectuais un zoom, il disparaissait.
J'ai utilisé à la place :
Code:
layerEnCours.refresh({force: true });
suite à au fil de discussion suivant :
//http://osgeo-org.1803224.n2.nabble.co … 17657.html
Une consommation mémoire sous IE était décelé mais semble avoir été résolu, il y a plusieurs mois.
Par contre, comme parfois je regènère ma carte sans recharger la page, je dois réappeler ma "layerEnCours".
Cela doit fonctionner uniquement quand map a fini de se charger je pense.
Mais je ne vois pas de méthode permettant de détecter cela (du style "loadend").
Quelqu'un aurait-il une idée ?
Hors ligne