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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Thu 27 July 2017 10:06

felixd
Participant occasionnel
Date d'inscription: 20 Jun 2017
Messages: 46

Buffer sur polyligne qui ne dépasse pas la ligne

Bonjour,

Je souhaiterais faire un buffer autour d'une géométrie du type polyligne. Ce buffer ne devant pas dépassant les extrémités de ligne.
il faudrait je pense régénérer les polylignes avec un décalage des St_Startpoint et st_endpoint de la longueur du buffer.

Merci pour votre aide.

Hors ligne

 

#2 Thu 27 July 2017 10:42

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

Re: Buffer sur polyligne qui ne dépasse pas la ligne

Bonjour,

La doc, la doc... smile

http://postgis.net/docs/ST_Buffer.html

Nico

Hors ligne

 

#3 Thu 27 July 2017 12:03

felixd
Participant occasionnel
Date d'inscription: 20 Jun 2017
Messages: 46

Re: Buffer sur polyligne qui ne dépasse pas la ligne

Bonjour Nico et merci,

La doc Mon capitaine.
Alors c'est encore pas tout a fait ce que je souhaite. il me faudrait un retrait aux extrémités.

Dernière modification par felixd (Thu 27 July 2017 12:03)

Hors ligne

 

#4 Thu 27 July 2017 13:43

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

Re: Buffer sur polyligne qui ne dépasse pas la ligne

Hello
Ah, alors il faut retirer une partie à la linestring, par exemple avec une fonction de référencement linéaire:

Code:

WITH tmp AS (
    SELECT 'LINESTRING(0 0, 5 5)' :: GEOMETRY AS geom
), tmp1 AS (
    SELECT st_lineSubstring(geom, 2.0 / st_length(geom), 1 - (2.0 / st_length(geom))) AS geom
    FROM tmp
) SELECT st_buffer(geom, 2, 'endcap=flat')
  FROM tmp1;

-- avec une fonction, si on doit réutiliser ce code SQL:
create or replace function st_coupeLesBouts(geom geometry, dist DOUBLE PRECISION)
  returns geometry as $$
    select st_lineSubstring(geom, dist / st_length(geom), 1 - (dist / st_length(geom)));
  $$ LANGUAGE SQL;

WITH tmp AS (
    SELECT 'LINESTRING(0 0, 5 5)' :: GEOMETRY AS geom
) SELECT st_buffer(st_coupeLesBouts(geom, 2), 2, 'endcap=flat')
  FROM tmp;

On découpe la ligne (ici, 2 unités) en calculant les fractions de lignes à retirer en début et fin de ligne.

Nico

Hors ligne

 

Pied de page des forums

Powered by FluxBB