Quantcast
Channel: Forum SIG - Systèmes d'Information Géographique et Géomatique
Viewing all articles
Browse latest Browse all 8030

[WebMapping] Génération d'un JSON "Valide" en PHP

$
0
0
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

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); 

2- En retour j'ai un format Geojson qui me donne quelques chose du genre

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\"}}
]
}

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 :

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"}}
]
}

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

Viewing all articles
Browse latest Browse all 8030

Trending Articles