#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: 1554
Re: Buffer sur polyligne qui ne dépasse pas la ligne
Bonjour,
La doc, la doc...
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: 1554
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