Pages: 1
- Sujet précédent - QGIS / Postgis: fonction "Group by" - attribut du groupe incorrect - Sujet suivant
#1 Thu 13 May 2021 19:54
- Jkerebel04
- Participant occasionnel
- Lieu: Oraison
- Date d'inscription: 21 Apr 2020
- Messages: 26
QGIS / Postgis: fonction "Group by" - attribut du groupe incorrect
Bonsoir à tous
Je sollicite votre aide pour une difficulté que je n'arrive pas résoudre
Tout d'abord le contexte :
J’ai une table bâtiment « tab_bat » cette dernière comprend un champ « type » qui peut être à "1" s’il s’agit d’un bâtiment massif, et à "2" s’il s’agit d’un bâtiment léger.
J’ai une deuxième table parcelle « tab_par »
Il arrive souvent qu’il y ait plusieurs groupes de bâtiments sur une parcelle. les bâtiments composants ces groupes peuvent être des deux types (1 ou 2 ).
Je souhaite unir dans une même géométrie les groupes de bâtiments mitoyens et donner à cette union le "type" le plus petit.
Avec le code ci-dessous, j’arrive bien à créer les unions des groupes de bâtiments mitoyens souhaités,
mais j’ai un soucis avec le champ "type" :
Le type est le même pour toutes les nouvelles géométrie créer sur la parcelle.
Dans le cas où tous les bâtiments sont de type 2, les nouvelles géométrie seront de type 2.
Mais il suffit, qu’un des bâtiments élémentaires soit de type 1 pour que l’ensemble des nouvelles entités issues des groupes de bâtiments élémentaires soit de type 1.
Je ne sais par quel bout le prendre.
Vous remerciant par avance pour votre aide,
Bien sincèrement,
Jérôme
Code:
CREATE TABLE tab_union AS SELECT -- Crée un identifiant unique pour la nouvelle géométrie créer par l'union de géométrie DISTINCT ROW_NUMBER() OVER() AS gid, -- Créé la géométrie unique à partie des différents polygones (st_dump(st_union(a.geom))).geom AS geom, -- avec comme référence d'union l'id de la parcelle b.id AS id_parc, -- "type 1" sont les bâtiments massifs et "type 2" bâtiments légers. Je souhaite renvoyer ici renvoyer le type de bâtiment de plus faible soit type=1 s'il existe un bâtiment élémentaire de ce type dans le groupe à unir. MIN(type) AS tab_bat_type, FROM tab_bat AS a LEFT JOIN tab_par AS b ON st_intersects(ST_PointOnSurface(a.geom),b.geom) GROUP BY b.id;
Dernière modification par Jkerebel04 (Fri 21 May 2021 15:14)
« Patience et longueur de temps font plus que force et ni que rage » - Jean de La Fontaine, Le Lion et le Rat.
Hors ligne
Pages: 1
- Sujet précédent - QGIS / Postgis: fonction "Group by" - attribut du groupe incorrect - Sujet suivant