#1 Fri 21 October 2011 10:21
- Thierry21
- Participant occasionnel
- Date d'inscription: 10 Aug 2006
- Messages: 45
[OpenLayers + Mapguide]
bonjour à tous,
j'essaye sans succès d'afficher une couche publiée par Mapguide en WFS dans Openlayers.
J'accède à cette couche WFS via Gaia ou QuantumGis sans problème.
De même j'arrive à accéder à des ressources WFS "publiques" via Openlayers.
C'est la combinaison WFS issu de Mapguide / Openlayers que je n'arrive pas à faire fonctionner.
J'ai du code de la forme :
Code:
var url = "http://127.0.0.1:80/mapguide/mapagent/mapagent.fcgi?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=ns128881253:macouche&SRSNAME=EPSG:27572"; var layer = new OpenLayers.Layer.Vector("WFS", { protocol: new OpenLayers.Protocol.WFS({ url: url }) });
quand je copie l'url dans un navigateur, j'obtiens bien une description de mes données.
Quelqu'un saurait-il comment paramétrer le protocole WFS (featuretype, featureNS, ...etc ) dans Openlayers pour accéder au service WFS de Mapguide ?
Merci de vos réponses.
Hors ligne
#2 Fri 21 October 2011 13:10
Re: [OpenLayers + Mapguide]
Bonjour,
Tu es sur que les autres URL fonctionnent ? Parce que le paramètre de la variable URL est erroné ca serait plutôt ca : http://127.0.0.1:80/mapguide/mapagent/mapagent.fcgi?
Autre question : la projection de ton projet est bien en 27572 ? Sinon il faut reprojeter à la volée.
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 Fri 21 October 2011 14:53
- Thierry21
- Participant occasionnel
- Date d'inscription: 10 Aug 2006
- Messages: 45
Re: [OpenLayers + Mapguide]
Bonjour,
merci pour cette réponse.
J'avais déjà essayé avec l'url proposée (c'est d'ailleurs comme ça que j'accède aux données WMS de mon serveur) mais ça ne donnait rien de plus.
Qu'entend tu par "la projection de ton projet" ?
Si c'est la projection de ma carte Openlayers la réponse est oui . Je la déclare comme ça :
Code:
var mapBounds = new OpenLayers.Bounds(801364.475487,1995250.205884,912428.503013,2133566.128722); var mapoptions = { maxExtent: mapBounds, maxResolution:'auto', projection: 'EPSG:27572', units: 'm' };
(c'est cohérent avec le SRS de ma source)
Si, coté Mapguide, je publie en WMS un calque basé sur cette ressource (avec les mêmes paramètres de de l'objet map coté Openlayers) : ça fonctionne.
Idem si je déclare un layer de type OpenLayers.Layer.MapGuide, en passant une MapDefinition : ça fonctionne.
Hors ligne
#4 Fri 21 October 2011 15:18
Re: [OpenLayers + Mapguide]
Bonjour,
Ca me parait bon. Par contre ton objet protocol est incorrecte :
var protocol = new OpenLayers.Protocol.WFS({
version: "1.1.0",
url: "http://demo.opengeo.org/geoserver/wfs",
featureType: "tasmania_roads",
featureNS: "http://www.openplans.org/topp",
geometryName: "the_geom"
});
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 October 2011 11:37
- Thierry21
- Participant occasionnel
- Date d'inscription: 10 Aug 2006
- Messages: 45
Re: [OpenLayers + Mapguide]
Merci,
j'avais déjà vu cet exemple.
mais c'est justement cet objet protocol que je n'arrive pas à configurer.
Dans QuantumGis ma ressource est vue ainsi :
Code:
http://127.0.0.1:80/mapguide/mapagent/mapagent.fcgi?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=ns128881253:macouche&SRSNAME=EPSG:27572
Coté Openlayers, je fais correspondre featuretype avec TYPENAME et version avec VERSION
Code:
var url2="http://127.0.0.1:80/mapguide/mapagent/mapagent.fcgi?"; var layer = new OpenLayers.Layer.Vector("WFS", { protocol: new OpenLayers.Protocol.WFS({ version: "1.0.0", url: url2, featureType: "ns128881253:macouche", geometryName: "the_geom" }) });
ma "feature" comporte bien un champ géométrique appelé "the_geom".
Je ne sais pas à quoi correspond featureNS alors je ne l'ai pas mis.
j'ai un message d'erreur pas vraiment clair :
Code:
Message : 'null' a la valeur Null ou n'est pas un objet. Ligne : 512 Caractère : 237 Code : 0 URI : http://127.0.0.1/mapguide/OpenLayers-2.11/OpenLayers.js
ça a un rapport avec le centrage/zoom de la couche, peut-être un bug dans le traitement du SRS ?
Hors ligne
#6 Mon 27 May 2013 10:53
- Thierry21
- Participant occasionnel
- Date d'inscription: 10 Aug 2006
- Messages: 45
Re: [OpenLayers + Mapguide]
un petit up 2 ans après
Je dois de nouveau monter un projet basé sur Openlayers et j'aimerai quand même rentabiliser ma licence Mapguide (Autodesk Infrastructure Mapserver 2013 désormais).
Je n'arrive toujours pas à consommer une ressource publiée en WFS par AIMS 2013 en Openlayers, ça fait qques jours que je teste un peu toutes les configurations possibles.
Je vous met un peu de code dans l'espoir ou quelqu'un aurait une solution ... (nb : le calque est accessible en WFS avec QGIS ou Autocad MAP ...).
GetCapabilities :
Code:
<?xml version="1.0"?> <!-- ================================================================== --> <!-- FEATURE TYPE LIST SECTION --> <!-- ================================================================== --> <FeatureTypeList> <!-- Feature class #1 --> <FeatureType> <Name>ns217334677:test</Name> <Title>datashp</Title> <Abstract/> <DefaultSRS>EPSG:4326</DefaultSRS> <OutputFormats> <Format>GML2</Format> <Format>text/xml; subtype=gml/2.1.2</Format> <Format>GML3</Format> <Format>text/xml; subtype=gml/3.1.1</Format> </OutputFormats> <WGS84BoundingBox> <LowerCorner>-180 -90</LowerCorner> <UpperCorner>180 90</UpperCorner> </WGS84BoundingBox> </FeatureType> </FeatureTypeList>
GetFeature :
Code:
<?xml version="1.0"?> <FeatureCollection schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/base/feature.xsd http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"> <!-- Feature 1 --> <featureMember> <test> <FeatId>1</FeatId> <id>1</id> <nomtest>blabla1</nomtest> <champnum>1</champnum> <Geometry> <Point> <pos>4.205910 47.186961</pos> </Point> </Geometry> </test> </featureMember> </FeatureCollection>
Coté Openlayers :
Code:
var urlmapguide ="http://monipserver/mapserver2013/mapagent/mapagent.fcgi"; var layerWFS = new OpenLayers.Layer.Vector("Donnees WFS Mapguide", { strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), protocol: new OpenLayers.Protocol.WFS.v1_1_0({ srsName : 'EPSG:4326', url: urlmapguide, featureType: "test", //schema : "test", //featureNS: "ns217334677", geometryName: "Geometry", //outputFormat: "GML3" featurePrefix: "ns217334677" }) });
Et enfin le message d'erreur dans firebug (et une carte vide dans Openlayers ...)
Code:
POST mapagent.fcgi 559 MgStreamIoException <wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <wfs:Query typeName="ns217334677:test" srsName="EPSG:4326"></wfs:Query> </wfs:GetFeature>
Si un spécialiste Openlayers passe dans le coin, merci à lui
Dernière modification par Thierry21 (Mon 27 May 2013 11:00)
Hors ligne