Bonjour à tous.
Je sais que ce sujet a déjà été abordé à mainte reprise mais je ne trouve réponse à mes questions dans aucun des posts.
Je m'explique :
1- Je génére un JSON par l'intermédiaire d'un PHP
2- En retour j'ai un format Geojson qui me donne quelques chose du genre
Là, les ennuis commencent, car :
- si je glisse ce json dans QGis, la géométrie n'apparait pas
- si j'essaie de faire un lien depuis mon php sur ce fichier, rien n'apparait non plus
J'ai donc tenté plusieurs manips et il s'avère qu'un code qui marcherait partout serait plutôt :
Les différences sont subtiles :
- "geometry":"{}" devient "geometry":{}
- \" devient "
Je sais qu'il existe certaines options dans json_encode permettant de gérer les quotes vu là : http://php.net/manual/fr/function.json-encode.php mais il s'avère que ma version de PHP est trop ancienne pour utiliser ces options, et je ne peux pas influer sur cette version.
Est-ce que vous auriez une idée qui me permettrait de sortir quelque chose qui puisse fonctionner ?
Par avance merci.
Geo-x
Je sais que ce sujet a déjà été abordé à mainte reprise mais je ne trouve réponse à mes questions dans aucun des posts.
Je m'explique :
1- Je génére un JSON par l'intermédiaire d'un PHP
Code PHP:
$dbconnect = pg_connect("host=localhost port=5432 dbname=mabdd user=postgres password=true");
$requete = "select ST_AsGeoJSON(ST_Transform(geom,4326)) AS geojson,nom FROM test";
$resultat = pg_query($dbconnect,$requete) or die(pg_errormessage());
$Resultats = array('type'=> 'FeatureCollection','features' => array());
$compteur = 0;
while ($row = pg_fetch_assoc($resultat))
{
$Resultats['features'][$compteur] = array('type' => 'Feature', 'geometry' => Null, 'properties' => Null);
//Je rajoute les propriétés
$Resultats['features'][$compteur]['properties']['nom'] = $row['nom'];
//Je rajoute la géométrie
$Resultats['features'][$compteur]['geometry'] = $row['geojson'];
//Incrémentation du compteur
$compteur ++;
}
pg_free_result($resultat);
//Affichage de json
header('Content-type: application/json',true);
echo json_encode($Resultats);
pg_close($dbconnect);
Code:
{
"type":"FeatureCollection",
"features":[
{
"type":" Feature",
"geometry":"{\"type\":\"Polygon\",\"coordinates\":[[[18.549999, 54.533298],[8.583300, 53.549999],[20.683300, 40.333302],[ -61.842171, 17.124773 ]]]}",
\"properties\":{\"nom\":\"Test\"}}
]
}
- si je glisse ce json dans QGis, la géométrie n'apparait pas
- si j'essaie de faire un lien depuis mon php sur ce fichier, rien n'apparait non plus
J'ai donc tenté plusieurs manips et il s'avère qu'un code qui marcherait partout serait plutôt :
Code:
{
"type":"FeatureCollection",
"features":[
{
"type":" Feature",
"geometry":{"type":"Polygon","coordinates":[[[18.549999, 54.533298],[8.583300, 53.549999],[20.683300, 40.333302],[ -61.842171, 17.124773 ]]]},
"properties":{"nom":"Test"}}
]
}
- "geometry":"{}" devient "geometry":{}
- \" devient "
Je sais qu'il existe certaines options dans json_encode permettant de gérer les quotes vu là : http://php.net/manual/fr/function.json-encode.php mais il s'avère que ma version de PHP est trop ancienne pour utiliser ces options, et je ne peux pas influer sur cette version.
Est-ce que vous auriez une idée qui me permettrait de sortir quelque chose qui puisse fonctionner ?
Par avance merci.
Geo-x