Pages: 1
- Sujet précédent - Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis - Sujet suivant
#1 Wed 16 July 2014 17:36
- Mak6
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 1 Apr 2013
- Messages: 37
Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
Bonjour à vous tous,
Je débute en webmapping et souhaite réaliser une carte interactive présentant des données vecteur et statistiques
de l'INSEE stockées dans une table PostGis, avec une interface graphique faisant interagir les APIs OpenLayers, EXT-JS, rassemblées par la bibliothèque GeoExt 2.
Etant donné que je suis pour l'instant en "local" je vais devoir créer une passerelle entre ces données situées dans des tables PostGIS et mon application cliente.
Pour extraire les données de ma table picardie.shp (GéoFla) en GeoJSON, j'ai réalisé la requête suivante :
Code:
SELECT d.code_arr, d.nom_arr, st_asgeojson(d.geom) as coords, p.poptotal, p.popactive, round(((p.popactive / p.poptotal)*100.0),2) as proportion_actifs FROM picardie as d, poppicardie as p where d.code_arr = p.arr
Après avoir installé les différentes APIs sur le serveur, j'exécute ma page d'index qui contient les appels des bibliothèques de fonctions des APIs. Les APIs fonctionnent ainsi que googlemap mais J'essaie d'afficher le résultat de ma requête SQL (qui fonctionne bien dans postgis) mais rien ne s'affiche et firebug détecte l'erreur suivante:
Code:
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
je ne comprend pas ce qu'il se passe? à noter que sur mon ordinateur portable tout fonctionne mais pas sur l'ordinateur de mon travail...?!
Hors ligne
#2 Wed 16 July 2014 18:35
- Laurent Jégou
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 5 Sep 2005
- Messages: 447
- Site web
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
Pierre, le message d'erreur est assez explicite : le flux de données JSON récupéré n'est pas valide. Il se peut qu'il ait mal été généré par ton script PHP. Pour vérifier, regarde dans l'onglet "réseau" de firebug pour voir directement ce flux.
Enseignant-Chercheur en Géomatique
UT2J - Dept Géo / CNRS UMR LISST-Cieu / Master Sigma - Revue Mappemonde
Hors ligne
#3 Thu 17 July 2014 11:36
- Mak6
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 1 Apr 2013
- Messages: 37
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
Ok, les différents flux se chargent convenablement, la connexion à la base s'est établie avec succés, les données postgis sont bien consommées par le script php mais il me dit que j'utilise des coordonnées indéfinies?! What? "Use of undefined constant coords - assumed 'coords' on line 26"
voici la capture firebug :
https://drive.google.com/file/d/0B5xRrH … sp=sharing
voici la réponse de getdepts :
https://drive.google.com/file/d/0B5xRrH … sp=sharing
voici le problème :
https://drive.google.com/file/d/0B5xRrH … sp=sharing
Merci, au moins je sais maintenant d'où vient le problème même si je ne sais absolument pas comment le résoudre.
Code:
//Requête SQL $sql = "SELECT d.code_arr, d.nom_arr, st_asgeojson(d.geom) as coords, p.poptotal, p.popactive, round(((p.popactive / p.poptotal)*100.0),2) as proportion_actifs FROM picardie as d, poppicardie as p where d.code_arr = p.arr"; $res = pg_query($sql) or die(pg_last_error()); //Génération de la chaîne GeoJSON $str = ''; $str .= '{ "type": "FeatureCollection", "features": ['; $i = 1; while ($result = pg_fetch_array($res)) { $str .= '{ "geometry": '.$result[coords].' , "id": '.$i++.', "type": "Feature",'. '"properties": { "Code_arrondissement": "'.$result['code_arr'].'", "nom": "'.$result['nom_arr'].'", "poptotal": "'.$result['poptotal'].'", "popactive": "'.$result['popactive'].'", "proportion_actifs": "'.$result['proportion_actifs'].'" } },'; } $str2 = substr($str,0,strlen($str)-1); // enlever la dernière virgule $str2 .= ']}';
Hors ligne
#4 Thu 17 July 2014 12:46
- Laurent Jégou
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 5 Sep 2005
- Messages: 447
- Site web
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
C'est un warning/notice PHP, qui prévient du fait que la variable coords n'a pas été déclarée avant son utilisation dans le script, il faut donc mieux utiliser la syntaxe $result['coords'] (avec les guillemets autour).
(idem chez les voisins : http://www.forumsig.org/showthread.php/ … post326537)
Enseignant-Chercheur en Géomatique
UT2J - Dept Géo / CNRS UMR LISST-Cieu / Master Sigma - Revue Mappemonde
Hors ligne
#5 Thu 17 July 2014 13:23
- Mak6
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 1 Apr 2013
- Messages: 37
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
GéNIAL!!!! Merci encore une fois....! J'ai perdu la moitié de mes cheveux pour deux guillemets... : rolleyes :
Hors ligne
#6 Thu 17 July 2014 16:07
- Mak6
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 1 Apr 2013
- Messages: 37
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
Bon... J'ai un dernier petit souci.
Il a bien compris qu'il y avait une jointure de table entre "picardie" et "poppicardie" mais il ne m'affiche pas les résultats
capture :
https://drive.google.com/file/d/0B5xRrH … sp=sharing
Hors ligne
#7 Thu 17 July 2014 16:32
- Mak6
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 1 Apr 2013
- Messages: 37
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
Non c'est bon j'ai parlé trop vite.
Hors ligne
#8 Thu 24 July 2014 15:20
- Mak6
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 1 Apr 2013
- Messages: 37
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
Bonjour,
Petit à petit mon application se développe et ça commence à prendre forme.
J'ai quelques petits blocage tout de même à 2 niveaux.
1. Afficher dans le controleur les deux flux (OSM et google map) en même temps.
Mon contrôle LayerSwitcher affiche une table des matières pour la carte, ça me permettra de basculer entre BaseLasyers et pour afficher ou masquer des superpositions. J'arrive à afficher soit OSM, soit Google maps mais pas les deux en même temps dans le controleur.
Code:
// create map instance map = new OpenLayers.Map({projection: new OpenLayers.Projection("EPSG:3857"), controls: [new OpenLayers.Control.MousePosition(), new OpenLayers.Control.OverviewMap(), new OpenLayers.Control.Permalink(), new OpenLayers.Control.Permalink('permalink'), new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.PanZoomBar()]}); var gLayer = new OpenLayers.Layer.Google("Google Maps", {type: google.maps.MapTypeId.TERRAIN}); var gLayer = new OpenLayers.Layer.OSM();
2. Au niveau de la symbologie
Comme vous pouvez le voir sur le code suivant, j'effectue une symbologie affichant une couleur différentes par classe de 10
Code:
// create vector layer var context = { getFond: function(feature) { if (feature.attributes.nbactif <= 10) { return '#C79F4B'; } if (feature.attributes.nbactif >= 20&& feature.attributes.nbactif < 30) { return 'yellow'; } if (feature.attributes.nbactif >= 30&& feature.attributes.nbactif < 40) { return 'orange'; } if (feature.attributes.nbactif >= 50) { return 'blue'; }
Or, ma base de donnée concerne des zonage PLU, j'aurai aimé affiché une couleur pour chaque zonage, exemple
Si le libellé = A alors renvoyer la couleur jaune
Si le libellé = UHa alors renvoyer la couleur rouge
Je pensais que ça allait être très simple avec un simple "Like" ou "=" :
Code:
var context = { getFond: function(feature) { if (feature.attributes.libelle Like "A") { return '#C79F4B';
mais non
Hors ligne
#9 Thu 24 July 2014 17:40
- nworr
- Participant actif
- Date d'inscription: 10 Apr 2014
- Messages: 77
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
Pour l'affichage de osm et google maps en même temps, je ne crois pas que ce soit possible, ils sont considérés comme baseLayer systématiquement je pense et comme on ne peut avoir 2 base layer en même temps ....
Pour la fonction qui te retourne ça devrait pouvoir marcher avec
Code:
if (feature.attributes.libelle == "A") {
ou une expression regulière js si tu veux faire un like
Hors ligne
#10 Thu 24 July 2014 17:43
- Mak6
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 1 Apr 2013
- Messages: 37
Re: Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis
ça fonctionne! Merci pour le deuxième point, je n'y avais pas pensé....
Hors ligne
Pages: 1
- Sujet précédent - Problème de liaison entre Openlayers/EXT-JS/GeoExt2 et PostGis - Sujet suivant