#1 Sat 09 May 2020 16:09
- sylvainSIG
- Participant assidu
- Lieu: Moissac
- Date d'inscription: 29 Nov 2018
- Messages: 265
PHP et geojson
Bonjour,
J'essaye de faire redescendre une couche PostGis sous la forme d'un GeoJSON dans une appli webcarto. Pour cela, il faut un fichier de configuration php qui est ensuite appelé dans le JavaScript.
Le problème est qu'il ne me reconnait pas le champ que je souhaite, il capte ça comme une chaîne de caractère ou qqch comme ça.
Code:
var couche_layer1='dvf_d82.mutation as d'; var champ_geom='geompar'; var champ1 = 'd.codtypbien'; var donnees_layer1 = new ol.source.Vector({ url:'postgis_geojson.php?geotable='+couche_layer1+'&fields='+champ1, format :new ol.format.GeoJSON() });
La requête dans le php semble bonne vu qu'aucun message d'erreur n'est renvoyé. Mais il n'arrive pas à lire les données contenue dans la colonne 'd.codtypbien'.
Il y a surement une subtilité qque part mais où....
Voila le switch qui me permet de faire la symbologie
Code:
var symbo_occ_sol = function(feature){ var codtypbien = feature.get(champ1); switch(true){ case(codtypbien==='110'||'111'||'112'||'121'||'122'||'123'||'132'||'131'||'14' || '151' ||'152'): return style_bati; break; case(codtypbien==='232'||'233'||'239'): return style_bois; break; case(codtypbien==='2311'||'2312'||'2313'||'2319'): return style_agri; break; }};
et ma requête sql dans le PHP
Code:
$sql = "SELECT d.idmutation, d.datemut, d.anneemut, d.libnatmut, d.codtypbien, d.libtypbien, st_asgeojson(st_transform(d.geompar, 3857)) AS geojson FROM " . pg_escape_string($geotable)." JOIN dvf_d82.perimetre q ON st_intersects(st_transform(q.geom, 3857), st_transform(d.geompar, 3857)) JOIN dvf_d82.communes_tg j ON st_intersects(st_transform(d.geompar, 3857), st_transform(q.geom, 3857))";
Si qqun voit une erreur je suis preneur d'idée
Merci
Sylvain
Hors ligne
#2 Tue 12 May 2020 22:48
Re: PHP et geojson
Bonjour Sylvain,
J'ai survolé rapidement votre post mais je pense que votre requête sql pour retourner un GeoJSON n'est pas correcte et ce dernier n'est donc pas lu par votre script JS avec OL. Voici un exemple de requête pour retourner un objet GeoJSON depuis PG :
Code:
"SELECT json_build_object( 'type', 'FeatureCollection', 'crs', json_build_object( 'type', 'name', 'properties', json_build_object( 'name', 'EPSG:4326')), 'features', json_agg( json_build_object( 'type', 'Feature', 'id', id, 'geometry', ST_AsGeoJSON(wkb_geometry)::json, 'properties', json_build_object( 'name', name ) ) ) ) AS objet_geojson FROM pays;"
Cdlt
FD
Hors ligne