Message posté par : yaks48
----------------------------------------
Bonjour,
je dois faire des jointures spatiales entre mes parcelles à analyser d'une part et une
base de données de différents zonages d'autre part.
le but est de renvoyer une couche des parcelles analysées avec des champs créés pour
chacune des couches de la base de données. voici un extrait de code
-----------------
Code :
select
parcelles.geom,
CASE WHEN sum(st_area(st_intersection(parcelles.geom,
apb.geom)))>0.05*st_area(parcelles.geom) THEN 1 ELSE 0 END as r_apb,
CASE WHEN sum(st_area(st_intersection(parcelles.geom,
apg.geom)))>0.05*st_area(parcelles.geom) THEN 1 ELSE 0 END as r_apg,
rpg_ilots.libelle_gr as cult,
row_number() OVER () as champ_uni
from parcelles
left join apb on st_intersects(parcelles.geom, apb.geom)
left join apg on st_intersects(parcelles.geom, apg.geom)
left join rpg_ilots on st_intersects(parcelles.geom, rpg_ilots.geom)
group by parcelles.geom
-----------------
j'ai le message d'erreur : "la colonne « rpg_ilots.libelle_gr » doit
apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction
d'agrégat"
dans ce code je souhaite faire la jointure entre mes parcelles et par exemple la table
"apb" : il faut que la somme des surfaces d'intersection entre les polygones
apb et chacune des parcelles soit inférieure à 5 % de la surface de la parcelle.
il faut que le libellé de culture du rpg se retrouve pour chaque parcelle analysée.
chaque entité de la couche "parcelles" à analyser doit donc au final avoir 3
champs supplémentaires : r_apb (qui vaut 0 ou 1), r_apg (qui vaut 0 ou 1), et (cult qui
est du texte).
auriez-vous une solution ?
Merci infiniment pour le temps passé sur cette question :)
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=356256#p356256
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net