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

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

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

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

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

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

 

Pied de page des forums

Powered by FluxBB