Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Les Rencontres de SIG La Lettre, c'est terminé ! Les bénévoles de GeoRezo remercient chaleureusement tous ceux qui ont pû partager quelques intants avec eux sur le stand ou dans les allées !


A tous les visiteurs, lecteurs et utilisateurs du Portail GeoRezo, votre soutien nous est indispensable pour vous garantir des services et des espaces d'échanges de qualité !

 

Soutenez GeoRezo !

dons_v4_orange_tsp

#1 dim. 20 mai 2012 18:31

Achref_geo
Membre
Date d'inscription: 19 févr. 2012
Messages: 102

(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

Partagez  |