IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SIG : Système d'information Géographique Discussion :

script php et chargement d'une couche vecteur postgis


Sujet :

SIG : Système d'information Géographique

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien en Geomatique
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien en Geomatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Points : 16
    Points
    16
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {"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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Points : 310
    Points
    310
    Par défaut
    Je ne suis pas tout à fait sur, mais j'ai l'impression que les coordonnées sont inversées, et donc elles sont affichées à 10° de latitude, 40° de longitude.

    Regarde à cet endroit de la carte voir si tes données ne se sont pas mises à cet endroit

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien en Geomatique
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien en Geomatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Merci Jérôme pour ta réponse mais dans ce cas il ne s'agit pas d'une inversion des coordonnées, le probleme est qu'il n'y a pas une connexion à la source de données (script php), pour mieux comprendre le cas j'ai ouvert une nouvelle discussion, jette un oeil stp http://www.developpez.net/forums/d12...ouche-vecteur/

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/02/2011, 21h13
  2. Réponses: 6
    Dernier message: 20/11/2010, 21h15
  3. Réponses: 5
    Dernier message: 13/09/2010, 08h05
  4. Edition d'une couche vecteur existante
    Par mga_geo dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 19/02/2010, 18h52
  5. Lien sur un script php avec envoi d'une valeur
    Par Invité(e) dans le forum Langage
    Réponses: 14
    Dernier message: 21/01/2010, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo