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 Sun 20 May 2012 18:31

Achref_geo
Participant actif
Date d'inscription: 19 Feb 2012
Messages: 107

(openlayers) script php et chargement d'une couche vecteur postgis

Bonjour, il y a des jours que je ne réussi pas à afficher une couche vecteur avec openlayers avec la fonction "OpenLayers.Layer.Vector", à noté que j'ai affiché ma couche en tant que WMS sans probleme.
la couche est définie dans postgis par une table "etages" et qui comprend 3 colonnes (code_gouv (id), lib_gouv et the_geom) et elle est en projection 4326.
Voici le script php que j'ai créé pour charger la couche et la renvoyer en format GeoJSON:
Code PHP:

Code:

<?php 
$dbconn = pg_connect("host=localhost dbname=Achref_INS user=postgres 
password=XXXX1"); 
$requete = "SELECT code_gouv, lib_g_fr, ST_ASGeoJSON(the_geom)  FROM gouvernorat ORDER BY code_gouv ASC"; 
$result = pg_query($dbconn,$requete); 
while ($row = pg_fetch_assoc($result)) { 
$type = '"type": "Feature"'; 
$geometry = '"the_geom": ' ; 
$properties = '"properties": ' . json_encode($row); 
$feature[] = '{' . $type . ', ' . $the_geom . ', ' . 
$properties . '}'; 
} 
$header = '{"type": "FeatureCollection", "features": ['; 
$footer = ']}'; 
echo $header . implode(', ', $feature) . $footer; 
?>

lorsque j'accède à "http://127.0.0.1/MonTP/Appli_stage/gouv.php" j'obtient:
Code:

Code:

{"type": "FeatureCollection", "features": [{"type": "Feature", , "properties": {"code_gouv":"11","lib_g_fr":"Tunis","st_asgeojson":"{\"type\":\"MultiPolygon\",\"coordinates\":[[[[10.313770493916175,36.915829230855941],[10.313823952358479,36.915857495115802],[10.313902912520515,36.91580033291892],[10.313941498104763,36.915798226150699],[10.313979374100594,36.915796694042825],[10.314017253024016,36.915795715706039],[10.314055136438146,36.915795586491157],[10.314093022781758,36.915796011047377],[10.314130912153329,36.915797007834072],[10.314168806018751,36.915798853742722],[10.314206702816374,36.915801253422408],[10.314244602644692,36.915804225332593],[10.314282482517024,36.915807769551691],[10.314320389777127,36.915812144354845],[10.31435760888178,36.915816798391603],[10.314395523675282,36.915822594547329],[10.314432727229619,36.915828651556126],[10.314469244291887,36.915835301609938],[10.314506478372333,36.915842779893666],[10.314542979791915,36.915850814460931],[10.314579507237347,36.915859421180919],
..................................etc

je définie la couche vecteur dans mon code javascript comme suit :

Code:

Code:

var gouv = new OpenLayers.Layer.Vector("vector",{
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
            url: "gouv.php",
                        format: new OpenLayers.Format.GeoJSON(),
                    internalProjection: new OpenLayers.Projection("EPSG:900913"),
                          externalProjection: new OpenLayers.Projection("EPSG:4326")
                    })
                });

Je note que j'utilise google street comme fond pour mon application
Résultat :
je trouve le nom de la couche dans le layer switcher mais rien ne s'affiche sur le fond google
quelqu'un pourrais m'aidez svp

Hors ligne

 

Pied de page des forums

Powered by FluxBB