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 Wed 12 August 2009 12:33

Jule
Participant occasionnel
Date d'inscription: 21 Jul 2009
Messages: 48

[MapFish Server] Problème pour récupérer des features

Bonjour,

J'ai sur ma machine installé MapFish client et server, à priori tout fonctionne correctement.

J'ai voulu développer une application en utilisant l'exemple avec un "Editing Panel".
(http://demo.mapfish.org/mapfishsample/t … panel.html)

Mon problème est que le serveur me renvoi des objets vides. J'ai la certitude que le problème viens de la bbox passée en paramètre de la requête car lorsque j'effectue un copié/collé de la requête sans mettre aucune restriction (GET http://localhost:5000/monlayer) le serveur me renvoi parfaitement l'objet JSON attendu.

J'en viens à la conclusion qu'il s'agit très certainement d'un problème de réglage des projections & Co.


Voilà comment je configure ma carte et mon layer de base :

Code:

map_options: {
        projection: "EPSG:4326",
        units: "m",
        controls:    [
                        new OpenLayers.Control.ScaleLine(),
                        new OpenLayers.Control.PanZoomBar()
                    ],
        maxResolution: 156543.0339,
        maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
                                         20037508, 20037508.34),
        restrictedExtent: new OpenLayers.Bounds(-20037508, -20037508,
                                                20037508, 20037508.34)
};

base_name: "OpenStreetMap";
base_url: "http://tile.openstreetmap.org/";
base_params: {
    type: 'png', getURL: osm_getTileURL,
    displayOutsideMaxExtent: false,
    layer: 'basic'
};
base_options: {
    isBaseLayer: true,
    buffer: 0
};

map = OpenLayers.Map('map_div', map_options);
layerBase = OpenLayers.Layer.TMS.(
    base_name,
    base_url,
    base_params,
    base_options
);

map.addLayer(layerBase);

J'ai besoin qu'on m'éclaire sur la récupération/configuration des projections.


Merci bien.

Jule

Hors ligne

 

#2 Thu 13 August 2009 14:43

Jule
Participant occasionnel
Date d'inscription: 21 Jul 2009
Messages: 48

Re: [MapFish Server] Problème pour récupérer des features

Bon j'avance doucement dans l'identification de mon problème...

Etant donné que j'utilisais une base de test disponible sur le site de MapFish j'ai décidé de partir d'une base PostGIS vierge. J'ai donc créé une base avec une table unique nommée polygons et j'essaye de la peupler via mon Editing Panel (le widget fourni par MapFish). Je fais tout exactement comme dans l'exemple du trunk seulement arrivé à l'envoi de la requête POST étrangement il ne se passe strictement rien... Pas d'erreur et aucun message dans FireBug : aucune trace d'une quelconque requête POST vers mon serveur (alors que lorsque je tente de faire un "import" qui passe par la commande GET celle-ci s'effectue correctement et s'affiche bien dans mon FireBug...).

La fonction qui normalement lance la requête dans OpenLayers est (fichier XMLHttpRequest.js l.200) :

Code:

cXMLHttpRequest.prototype.send = function(vData) {
[...]
this._object.send(vData); // Sur l'exemple du trunk l'appel à POST se fait ici.
[...]
};

Chose encore plus étonnante mon paramètre vData est strictement le même que lorsque j'effectue un test sur le serveur de demo donc le seul problème que je pourrais imaginer ce serait une mauvaise configuration de mon serveur Apache local ?!

Quelqu'un à une idée ? Ou des paramètres à vérifier sur la config de mon serveur pour que ça marche ?


Merci pour vos futurs coups de pouce ! smile

Dernière modification par Jule (Thu 13 August 2009 14:45)

Hors ligne

 

#3 Thu 13 August 2009 16:15

Jule
Participant occasionnel
Date d'inscription: 21 Jul 2009
Messages: 48

Re: [MapFish Server] Problème pour récupérer des features

D'après mon Apache access log aucune requête POST n'est effectuée à aucun moment...

Résultat des courses la fonction send() qui appelle je ne sais quoi semble totalement in-fonctionnelle...

Si vous avez ne serait-ce qu'une idée sur le fonctionnement de cette fonction, ce qu'elle fait concrètement ou toute autre information qui pourrait m'être utile je suis preneur !


Jule, désespéré.

Hors ligne

 

#4 Wed 19 August 2009 13:48

Jule
Participant occasionnel
Date d'inscription: 21 Jul 2009
Messages: 48

Re: [MapFish Server] Problème pour récupérer des features

Après quelques tests je me rend compte que le problème vient très certainement de la communication entre ma page et le serveur MapFish : configuration proxy ?

Visiblement même en essayant d'envoyer un objet JSON via une page bateau et une requête XMLHttpRequest à mon serveur MapFish la requête n'aboutit à rien du tout : aucun message dans la console du serveur MapFish et rien dans FireBug.

Je ne sais pas trop comment tester mon serveur MapFish et j'aimerais savoir si la page de test que j'ai faite est sensée fonctionner dans un environnement fonctionnel.

Voici ma page de test :

Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>XMLHttpRequest Page</title>
  
  <script type="text/javascript" src="test.js"></script>
  
</head>
<body>
  <div>
    <p>Page de test</p>
  </div>
  <div>
    <input type="button" value="TEST" onClick="postXhr()"></input>
  </div>
</body>

</html>

Et le fichier test.js :

Code:

function postXhr() {
    xhr = new XMLHttpRequest() ;
    feature = "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"id\":\"OpenLayers.Feature.Vector_2330\",\"properties\":{\"name\":\"foo\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-6.328125,55.546875],[5.625,43.59375],[-20.390625,33.046875],[-6.328125,55.546875]]]}}]}";
    url="http://localhost:5000/polygons";
    
    xhr.open("POST", url, true)
    
    xhr.onreadystatechange = function(){
        if ( xhr.readyState == 4 ){
            alert(xhr.responseXML + "\n Status : " + xhr.status);
        }
    }
    
    xhr.setRequestHeader("Content-Type", "application/json");
    
    xhr.send(feature);
}

Merci.

Hors ligne

 

Pied de page des forums

Powered by FluxBB