Message posté par : Jkerebel04
----------------------------------------
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 en 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 arrives souvent qu’il y ait plusieurs groupes de bâtiments sur une parcelle. les
bâtiments composant ces groupes peuvent être des deux types (1 ou 2 ).
Je souhaite unir dans une même géométrie les groupe 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 souhaitées,
mais j’ai un soucis avec les types :
Le types est le même pour toutes les nouvelles géométrie créer sur la parcelle.
Dans le cas ou tout les bâtiment sont de type 2, les nouvelles géométrie seront de type
2.
Mais il suffit, qu’une des bâtiments élémentaires soit de type 1 pour que l’ensemble des
nouvelles entités 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 polygone
(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âtiment massif et type 2 bâtiments légers
MIN(type) AS tab_bat_type,
-- La surface de la parcelle ainsi créer, avec la transformation du SCR en degré au SCR
en mètre, afin une surface correspondant à la surface intérieur soit un buffer de -20 cm
st_area(
ST_Buffer(
ST_Transform((st_dump(st_union(a.geom))).geom,2154)
,-0.2)
) as surf_bat
FROM tab_bat AS a
LEFT JOIN tab_par AS b ON st_intersects(ST_PointOnSurface(a.geom),b.geom)
GROUP BY b.id;
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=343197#p343197
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