[postgis-users] Odd st_buffer behaviour

Rémi Cura remi.cura at gmail.com
Tue Nov 26 00:49:12 PST 2013


About sharp turns : you could use a small buffer then errosion or straight
skeleton (out of the box with sfcgal).

For the flat encapt I suggest you to use st_split afterward.

Cheers,

Rémi-C


2013/11/26 Mike Toews <mwtoews at gmail.com>

> On 26 November 2013 06:04, James David Smith
> <james.david.smith at gmail.com> wrote:
> > 2) Now I buffer it:
> >
> > SELECT ST_Buffer(
> >  ST_GeomFromText(
> >   'LINESTRING(555936.152 200920.582000002,555938.312000002
> > 200908.102000002,555943.112000001 200883.142000001,555953.192000001
> > 200839.702,555964.471999999 200798.181999998,555974.312
> > 200764.342000002,555983.912 200744.182000002,555990.554
> > 200733.721000003,555993.512 200729.062000005,555995.778000002
> > 200726.756000001,556006.952000001 200715.382000001,556024.232
> > 200698.822000002,556036.597999999 200687.931,556050.392000001
> > 200675.782000002,556055.914 200671.265000002,556071.512
> > 200658.502000002,556094.915000001 200640.537000002,556095.451000001
> > 200640.152000001,556113.992000001 200628.742000001,556138.472000001
> > 200616.502000004,556159.112000002 200605.942000002,556180.232000001
> > 200589.862000002,556207.592 200568.022000002,556217.912000002
> > 200558.182,556228.472000001 200545.702,556240.472
> > 200527.702000003,556251.992000001 200509.221999999,556253.237000001
> > 200506.732000003,556258.952 200495.302000001,556268.000000001
> > 200478.000000002,556279.592 200458.582000002,556300
> > 200431.000000002,556351.000000002 200364,556349.253
> > 200366.234000001)'), 1000, 'endcap=flat join=round');
>
> Hi James,
>
> I just had a spin with this geometry in JTS TestBuilder, in Buffer >
> BufferWithParams. This graphical tool has similar controls as
> ST_Buffer, but is slightly more interactive. I get pretty much the
> same result, with anomalies on both ends of the linestring. GEOS (used
> by PostGIS) is a C++ port of JTS, so this is no surprise to see the
> same results. Only buffers less than 200 look normal.
>
> The oddness at the bottom is explained by a small J-shaped kink at the
> end of the linestring, which has a short and very sharp angle (nearly
> 360 degrees or 0 degrees), which makes the last segment go upwards and
> nearly parallel to the second-to-last segment of the linestring.
> Removing the last coordinate fixes things on the lower part. This is
> most likely a digitization error.
>
> If you have heaps of these geometries that need cleaning up, you could
> write a function to return the maximum vertex angle in a linestring,
> and filter out the sharp ones, e.g. > 350 degrees or < 10 degrees,
> then check and fix these up manually.
>
> On the upper-right part of the buffer, the polygon is clearly buffered
> by the correct distance from the middle of the line, but the clip from
> the top cap carves it a bit funny. I've seen this before too, and I'm
> not sure if anything can be done about this part.
>
> -Mike
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20131126/1e9ac291/attachment.html>


More information about the postgis-users mailing list