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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 06 December 2013 11:20

mlascaray
Juste Inscrit !
Lieu: Carcassonne
Date d'inscription: 27 Nov 2013
Messages: 9

Union des buffers qui se superposent

Bonjour,

J'ai une couche multilignes et j'ai crée des buffers pour toutes les lignes. J'ai donc les buffers qui se superposent et je voudrais que ces buffers n'en forment qu'un car sinon mon st_within ne marchera par. Savez-vous comment faire une union de ces buffers? J'ai essayé st_union mais ça ne marche pas.

Merci

Dernière modification par mlascaray (Fri 06 December 2013 11:22)

Hors ligne

 

#2 Fri 06 December 2013 11:37

cyrille
Participant assidu
Date d'inscription: 7 Feb 2006
Messages: 401

Re: Union des buffers qui se superposent

Bonjour quel logiciel utilisez vous ?

Hors ligne

 

#3 Fri 06 December 2013 11:51

mlascaray
Juste Inscrit !
Lieu: Carcassonne
Date d'inscription: 27 Nov 2013
Messages: 9

Re: Union des buffers qui se superposent

J'utilise pgAdminIII. Excusez-moi j'ai oublié de le dire.

Hors ligne

 

#4 Fri 06 December 2013 12:00

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3941

Re: Union des buffers qui se superposent

Bonjour,
Si vous faites l'opération dans l'interface de QGIS, lors de la création du buffer, il faut choisir (menu Vecteur > Outils de géotraitement > Tampon et penser à cocher "union des résultats du tampon". Par contre, cela va vous générer une seule ligne dans la table, pour tous les polygones.

Si vous le faites depuis votre base de données, vous pouvez faire

Code:

insert into matablebuffer(champ1, champ2, ..., geom)
select champ1, champ2, ..., st_union (st_buffer(geom, distance))
from matablelineaire
group by champx --- optionnel selon que vous voulez regrouper vos buffers à partir d'un champ ou avoir un seul objet

.
Il vous faudra par contre penser à supprimer les buffers existants

PS : Il faudra peut-être un st_multi(st_union(st_buffer(geom, distance))) selon que votre table autorise les multipolygones ou pas.
PS2 : pensez au forum GeoBD pour ce genre de requêtes

Hors ligne

 

#5 Fri 06 December 2013 13:10

mlascaray
Juste Inscrit !
Lieu: Carcassonne
Date d'inscription: 27 Nov 2013
Messages: 9

Re: Union des buffers qui se superposent

Bonjour,

Je le fait via la base de données et j'ai mis exactement le même code que vous m'avez proposé mais ça ne veut tout de même pas me faire d'union.
J'ai les buffer qui sont un peu modifiés mais c'est tout. C'est vraiment bizarre.

Edit:

En fait vu que je veux unir tous les buffer, j'ai mis un count(index) dans le SELECT pour avoir une seule entité parce qu'en mettant index chaque buffer fesait l'union de lui-même je crois. Donc maintenant c'est bon.

Dernière modification par mlascaray (Fri 06 December 2013 14:01)

Hors ligne

 

#6 Fri 06 December 2013 14:39

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1230
Site web

Re: Union des buffers qui se superposent

Bonjour,

ceci devrait vous permettre d'obtenir le résultat escompté (un seul objet pour les tampons qui se chevauchent).

st_union crée un seul objet pour l'ensemble des buffers de toute la couche et la fonction st_dump "éclate" le multiploygone obtenu en polygones simples.

http://postgis.refractions.net/docs/ST_Dump.html

Code:

SELECT (st_dump(st_union(st_buffer(geom, distance)))).geom
  FROM votre_table

Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#7 Fri 06 December 2013 15:06

mlascaray
Juste Inscrit !
Lieu: Carcassonne
Date d'inscription: 27 Nov 2013
Messages: 9

Re: Union des buffers qui se superposent

Bonjour,

Une fois la requête lancée ça me met "la colonne « geom » est de type geometry mais l'expression est de type geometry_dump".
Vous avez une solution s'il vous plait?

Merci

Hors ligne

 

#8 Fri 06 December 2013 15:25

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1230
Site web

Re: Union des buffers qui se superposent

st_dump retourne un objet composite de type geometry_dump[] contenant d'une par un numéro de geometrie (.path) et d'autre part la géometrie (.geom)

C'est pourquoi il faut bien demander la partie "geometrie" du résultat de st_dump :

select (st_dump(...)).geom from


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#9 Fri 06 December 2013 15:34

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Union des buffers qui se superposent

Bonjour,

Quelle est votre requête ?. Celle donnée par Mathieu sort bien l'objet geometry du dump: (st_dump(geom)).geom
L'utilisation des parenthèses autour de st_dump est obligatoire dans ce cas.

Le st_within que vous voulez lancer après doit vous permettre de trouver tous les objets dans les buffers, c'est à dire tous les objets situés à une certaine distance des lignes ?
Si c'est le cas, ne passez par un buffer, c'est long !
La fonction st_dwithin(geom, distance) permet de répondre à ces requêtes de façon très performante.

Nicolas

Hors ligne

 

#10 Mon 09 December 2013 12:19

mlascaray
Juste Inscrit !
Lieu: Carcassonne
Date d'inscription: 27 Nov 2013
Messages: 9

Re: Union des buffers qui se superposent

Merci à tous pour vos propositions, elles sont toutes bien. En fait quand je voulais visualiser mes tables sur QGIS j'ouvrai la mauvaise couche et je croyais que ça marchait pas bien alors que ça marche impeccable.
Merci encore et désolé.

Hors ligne

 

Pied de page des forums

Powered by FluxBB