Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 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

 

Pied de page des forums

Powered by FluxBB