Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Sat 09 May 2020 16:09

sylvainSIG
Participant assidu
Lieu: Moissac
Date d'inscription: 29 Nov 2018
Messages: 263

PHP et geojson

Bonjour,

J'essaye de faire redescendre une couche PostGis sous la forme d'un GeoJSON dans une appli webcarto. Pour cela, il faut un fichier de configuration php qui est ensuite appelé dans le JavaScript.

Le problème est qu'il ne me reconnait pas le champ que je souhaite, il capte ça comme une chaîne de caractère ou qqch comme ça.

Code:

        var couche_layer1='dvf_d82.mutation as d';
    var champ_geom='geompar';
    var champ1 = 'd.codtypbien';
    
    
        var  donnees_layer1 = new ol.source.Vector({
        url:'postgis_geojson.php?geotable='+couche_layer1+'&fields='+champ1,
        format :new ol.format.GeoJSON()
        });

La requête dans le php semble bonne vu qu'aucun message d'erreur n'est renvoyé. Mais il n'arrive pas à lire les données contenue dans la colonne 'd.codtypbien'.

Il y a surement une subtilité qque part mais où....

Voila le switch qui me permet de faire la symbologie

Code:

 var symbo_occ_sol = function(feature){
        var codtypbien = feature.get(champ1);
        
        switch(true){
                case(codtypbien==='110'||'111'||'112'||'121'||'122'||'123'||'132'||'131'||'14' || '151' ||'152'):
                return style_bati;
                break;
                case(codtypbien==='232'||'233'||'239'):
                return style_bois;
                break;
                case(codtypbien==='2311'||'2312'||'2313'||'2319'):
                return style_agri;
                break;
        }};

et ma requête sql dans le PHP

Code:

$sql = "SELECT d.idmutation, d.datemut, d.anneemut, d.libnatmut, d.codtypbien, d.libtypbien, st_asgeojson(st_transform(d.geompar, 3857)) AS geojson FROM " . pg_escape_string($geotable)." JOIN dvf_d82.perimetre q ON st_intersects(st_transform(q.geom, 3857), st_transform(d.geompar, 3857))
     JOIN dvf_d82.communes_tg j ON st_intersects(st_transform(d.geompar, 3857), st_transform(q.geom, 3857))";

Si qqun voit une erreur je suis preneur d'idée

Merci

Sylvain

Hors ligne

 

#2 Tue 12 May 2020 22:48

FlorianD
Membre
Date d'inscription: 22 Dec 2016
Messages: 90
Site web

Re: PHP et geojson

Bonjour Sylvain,

J'ai survolé rapidement votre post mais je pense que votre requête sql pour retourner un GeoJSON n'est pas correcte et ce dernier n'est donc pas lu par votre script JS avec OL. Voici un exemple de requête pour retourner un objet GeoJSON depuis PG :

Code:

"SELECT json_build_object(
        'type', 'FeatureCollection',
        'crs',  json_build_object(
            'type',      'name',
            'properties', json_build_object(
            'name', 'EPSG:4326')),
        'features', json_agg(
            json_build_object(
                'type',       'Feature',
                'id',         id,
                'geometry',   ST_AsGeoJSON(wkb_geometry)::json,
                'properties', json_build_object(
                    'name', name
                )
            )
        )
    ) AS objet_geojson FROM pays;"

Cdlt

FD

Hors ligne

 

Pied de page des forums

Powered by FluxBB