#1 Thu 05 April 2012 16:43
- zone12
- Participant actif
- Date d'inscription: 3 Jan 2008
- Messages: 56
[ExtJs,GeoExt, Openlayers, Geoserver]
Bonjour à tous,
je reproduis et adapte le tutoriel OpenGeo sur comment créer une jolie petite application web carto.
Il y a une étape qui me pose toujours problème, c'est l'affichage des "nom, titre et description" des couches présentes dans Geoserver.
Il s'agit d'utiliser une GRID VIEW avec une requête WMSCapabilities du type :
Code:
http://monDomaine:monPort/geoserver/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities
Ce qui est assez marrant, c'est que j'ai testé exactement le même code de 2 manières différentes :
1/ via Apache httpd 2.2
2/via Tomcat6 (en mettant Geoserver dans Tomcat) faisant également office de serveur http.
Ce qui me surprend c'est que :
- avec la config 1/ , le tableau ne se rempli pas avec les données (Nom, Titre, Description).
- avec la config 2/ , le tableau se rempli correctement.
A priori, ce n'est pas un problème de proxy (proxy.cgi fourni par Openlayers), car j'ai une autre appli uniquement à base d'Openlayers avec un
Code:
OpenLayers.Control.WMSGetFeatureInfo
qui fonctionne correctement uniquement si
Code:
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
est déclaré.
Une autre curiosité (pour moi en tout cas), c'est qu'avec la config 2/ , si je désactive le proxy, ça passe quand même et le tableau affiche les données.
Encore une info, dans la console firebug, après avoir chargé l'application dans le navigateur, avec la config 1/ je ne vois pas la requête correspondante à mon "GetCapabilities" alors qu'avec la config 2/, oui :
Code:
GET http://192.168.1.140:8181/geoserver/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities 200 OK 344ms
.
Avec la congig 1/, si dans le code ma requête je crée volontairement une erreur du type
Code:
GET 192.168.1.140:8181/geoserver/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities 403 Forbidden 455ms
: la console de firebug m'affiche alors une requête GET !
Code:
http://monDomaine/repertoire1/repertoire2/monDomaine:monPort/geoserver/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities
.
( les "/repertoire1/repertoire2" c'est parce que mon application n'est pas à la racine du www).
Ci-dessous la partie du code certainement concernée.
Code:
var urlWms = 'http://monDomaine:monPort/geoserver/wms'; var urlGetCapabilities = '?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities';
Code:
items.push([ { xtype: "grid", ref: "capsGrid", title: "Available Layers", region: "north", height: 150, viewConfig: {forceFit: true}, store: new GeoExt.data.WMSCapabilitiesStore({ url: urlWms + urlGetCapabilities, autoLoad: true }), columns: [ {header: "Name", dataIndex: "name", sortable: true}, {header: "Title", dataIndex: "title", sortable: true}, {header: "Abstract", dataIndex: "abstract"} ], bbar: [{ text: "Add to Map", handler: function() { app.capsGrid.getSelectionModel().each(function(record) { var clone = record.clone(); clone.getLayer().mergeNewParams({ format: "image/png", transparent: true }); app.mapPanel.layers.add(clone); app.mapPanel.map.zoomToExtent( OpenLayers.Bounds.fromArray(clone.get("llbbox")) ); }); } }] } ]);
Pour terminer, si je lance directement dans le navigateur "http://monDomaine:monPort/geoserver/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities", j'obtiens bien le fichier xml correspondant.
Si vous êtes arrivé là c'est que vous avez tous lu, merci et félicitation.
Ma question comporte pas mal de paramètres pouvant influer sur le résultat, mais si vous avez une idée, une piste, j'en serai heureux.
Détails techniques:
---------------------
ExtJs 3.4.0
GeoExt 1.1
OpenLayers 2.11
Geoserver 2.1.3a
Windows 2003
Hors ligne