#1 Wed 29 August 2012 10:40
- yo_haha
- Participant occasionnel
- Lieu: Martil
- Date d'inscription: 28 Sep 2008
- Messages: 47
[OpenLayers] Couche WFS ne s'affiche pas
Bonjour,
Je développe un site avec OpenLayers 2.12. Je veux afficher un shp stocké dans une BD PostGIS 1.5 et publié dans Geoserver 2.1.4. Le Geoserver est installé sur une machine virtuelle Linux. Mes fichiers code source se trouvent sur mon PC Windows hôte de la machine virtuelle.
J'ai téléchargé le proxy.cgi que j'ai modifié en mettant le chemin correct vers python.exe et en mettant dans allowedHosts l'adresse de la machine virtuelle avec le port utilisé par Geoserver. J'ai mis le proxy dans le dossier cgi-bin d'Apache.
La projection de la carte est EPSG:900913, alors que la couche est EPSG:2154
Voici le code Javascript qui crée et publie la couche WFS :
Code:
var departement = new OpenLayers.Layer.Vector("WFS", { strategies: [new OpenLayers.Strategy.BBOX()], protocol: new OpenLayers.Protocol.WFS({ srs: 'EPSG:2154', version: '1.1.0', url: "http://10.3.9.99:8080/geoserver/wfs", featureType: "baboa", //le nom de la couche shp sur Geoserver featureNS: "http://10.3.9.99:8080/navigueo", //l'espace de nom attribué à l'espace de travail navigueo geometryName: 'the_geom' }), isBaseLayer: true });
En utilisant Firebug je constate que le navigateur reçoit les données de la couche WFS. Dans l'onglet réponse de la requête WFS je trouve :
Code:
<?xml version="1.0" encoding="UTF-8"?> <wfs:FeatureCollection numberOfFeatures="96" timeStamp="2012-08-28T16:16:40.834Z" xsi:schemaLocation="http://10.3.9.99:8080/navigueo http://10.3.9.99:8080/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=navigueo%3Ababoa http://www.opengis.net/wfs http://10.3.9.99:8080/geoserver/schemas/wfs/1.1.0/wfs.xsd" xmlns:ogc="http://www.opengis.net/ogc" xmlns:tiger="http://www.census.gov" xmlns:cite="http://www.opengeospatial.net/cite" xmlns:nurc="http://www.nurc.nato.int" xmlns:sde="http://geoserver.sf.net" xmlns:wfs="http://www.opengis.net/wfs" xmlns:topp="http://www.openplans.org/topp" xmlns:navigueo="http://10.3.9.99:8080/navigueo" xmlns:it.geosolutions="http://www.geo-solutions.it" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sf="http://www.openplans.org/spearfish" xmlns:ows="http://www.opengis.net/ows" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink"><gml:featureMembers><navigueo:baboa gml:id="baboa.1"><navigueo:the_geom><gml:MultiSurface srsDimension="2" srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"><gml:surfaceMember><gml:Polygon srsDimension="2"><gml:exterior><gml:LinearRing srsDimension="2"><gml:posList>5.829631445072273 45.93758043232606 5.8261159178701 45.9352624556811 5.821881470639184 45.92924090296079 5.828998413522418 45.91696173897547 5.82631664321744 45.90369296358037 5.824882239832302 45.90038584685676 5.815154073062682 45.87720082411414 5.813808914931024 45.873846325406845 5.807525042396833 45.86063988763333 5.805398640115826 45.85788140446803 5.801109494979825 45.84579651849398 5.7958504997609195 45.829797923992984 5.79212964030583 45.82809690249188 5.7869342168074605 45.82322442768847 5.7853189208397495 45.82007456995209 5.784591209234804 45.79722385504249 5.781382759208919 45.78084082525401 5.780055862838618 45.778017212138266 5.783046882751666 45.772465079944375 5.7826119658006165 45.76894370067135 5.7795092518389035 45.758712233043354 5.783591543646681 45.745203939678 5.7804266220277425 45.74292130109542 5.776638977471268 45.7425821565149 5.769678505574585 45.740816145288335 5.771226350620255 45.73755237249353 5.776365658993755 [...]
Malgré que la réponse n'est pas vide, la couche WFS ne s'affiche pas sur la carte.
Quand j'essaie d'afficher la couche sur QGIS avec cette URL :
Code:
http://10.3.9.99:8080/geoserver/navigueo/wfs?version=1.1.0&typename=navigueo:baboa
la couche n'apparait pas. La table attributaire de la couche est vide !
Auriez-vous des indications à me donner ?
Cordialement.
Hors ligne
#2 Wed 29 August 2012 11:05
Re: [OpenLayers] Couche WFS ne s'affiche pas
Bonjour,
Tes données sont en WGS84 (latLon, EPSG:4326) mais tu veux les afficher en EPSG:900913 (Google Mercator) et tu les demandes en Lambert93 (EPSG:2154)
Il y a donc un problème au niveau des projections, je pense que si tu zoomes autour de 45,5 en Google Mercator tu trouveras tes données (mais mal positionné).
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 Wed 29 August 2012 11:49
- yo_haha
- Participant occasionnel
- Lieu: Martil
- Date d'inscription: 28 Sep 2008
- Messages: 47
Re: [OpenLayers] Couche WFS ne s'affiche pas
Merci Yves. Effectivement, en zoomant sur le point (45,5) la couche est visible mais déformée.
J'ai vérifié sur Geoserver et les données sont bien en 2154. Je ne sais pas d'où sort le 4326 dans le fichier xml. Pour résoudre le problème d'affichage, est-ce qu'il suffit de modifier un des attributs (de la carte ou de la couche) ou bien faudrait-il reprojeter la couche avant de l'afficher ?
Hors ligne
#4 Wed 29 August 2012 11:54
Re: [OpenLayers] Couche WFS ne s'affiche pas
Bonjour,
Tes données sont en 2154 mais GeoServer peut les service en 4326 ou en 900913 il faut que tu configure ta couche côté OpenLayers pour qu'il demande des données en 900913. Tu peux vérifier la requête WFS envoyée par OL pour vérifier quelle projection elle demande.
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 29 August 2012 14:17
- Geo-x
- Participant assidu
- Lieu: Pau
- Date d'inscription: 2 Nov 2010
- Messages: 215
Re: [OpenLayers] Couche WFS ne s'affiche pas
Bonjour,
J'ai ûn problème similaire sauf que c'est sur mapserver, et je te remercie pour la mise en ligne de ton problème, parce que ça me donne de nouvelles psites de réflexions...
Pour info pour ta config openlayer ça devrait ressembler à ceci :
Code:
map = new OpenLayers.Map('mapping', {projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:2154'")
Voilou.
Hors ligne
#6 Wed 29 August 2012 14:35
- yo_haha
- Participant occasionnel
- Lieu: Martil
- Date d'inscription: 28 Sep 2008
- Messages: 47
Re: [OpenLayers] Couche WFS ne s'affiche pas
Ok merci. J'ai changé l'attribut srsName du protocole WFS en 'EPSG:900913' et ça marche.
Question : quand je met EPSG:2154, la couche WFS ne s'affiche pas au bon endroit ; alors que si j'appelle la même couche de données mais en WMS et je met EPSG:2154, la couche WMS s'affiche là où il faut. Comment peut-on l'expliquer ?
Hors ligne
#7 Wed 29 August 2012 14:35
Re: [OpenLayers] Couche WFS ne s'affiche pas
Bonjour,
Ce n'est qu'une solution qui n'est pas forcément la meilleure. Mapserver et GeoServer peuvent reprojeter les données à la volée en 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
#8 Wed 29 August 2012 14:41
- yo_haha
- Participant occasionnel
- Lieu: Martil
- Date d'inscription: 28 Sep 2008
- Messages: 47
Re: [OpenLayers] Couche WFS ne s'affiche pas
Bonjour Geo-x,
Pourquoi tu ajoutes un displayProjection à ta Map et pourquoi tu mets EPSG:2154 ?
Hors ligne
#9 Wed 29 August 2012 15:28
- Geo-x
- Participant assidu
- Lieu: Pau
- Date d'inscription: 2 Nov 2010
- Messages: 215
Re: [OpenLayers] Couche WFS ne s'affiche pas
Bonjour,
le displayProjection permet de visualiser, sur ta carte, les coordonnées au passage de la souris dans le SCU définit. En gros il définit dans quel SCU tu veux visualiser ta carte.
pourquoi tu mets EPSG:2154 ?
Là j'ai mis EPSG:2154 puisque si j'ai bien compris, c'est le SCU dans lequel tu aimerais visualiser tes données. Mais libre à toi de mettre autre chose ;-)
Hors ligne
#10 Wed 29 August 2012 15:44
- yo_haha
- Participant occasionnel
- Lieu: Martil
- Date d'inscription: 28 Sep 2008
- Messages: 47
Re: [OpenLayers] Couche WFS ne s'affiche pas
Que je mette 2154, 900913 ou rien dans displayProjection, les coordonnées sont toujours les mêmes au passage de la souris.
Hors ligne