[postgis-users] Splitting linestring into line segments
Kevin Neufeld
kneufeld at refractions.net
Wed Mar 5 13:02:26 PST 2008
Hi Rainer,
If your linestrings aren't too large (ie < 1000pts), you can actually do
this with a simple query. The reason I say this is because
generate_series doesn't scale well.
postgis=# CREATE TEMP TABLE mylines AS
postgis-# SELECT 'LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)'::geometry AS geom;
SELECT
postgis=# SELECT AsText( MakeLine(sp,ep) )
postgis-# FROM (
postgis(# SELECT pointn(geom, generate_series(1, npoints(geom)-1)) as sp,
postgis(# pointn(geom, generate_series(2, npoints(geom) )) as ep
postgis(# FROM mylines ) AS foo;
astext
---------------------
LINESTRING(0 0,0 1)
LINESTRING(0 1,1 1)
LINESTRING(1 1,1 0)
LINESTRING(1 0,0 0)
(4 rows)
Cheers,
Kevin
-------------
Kevin Neufeld
Software Developer
Refractions Research Inc.
300-1207 Douglas St.
Victoria, B.C., V8W 2E7
Phone: (250) 383-3022
Email: kneufeld at refractions.net
Rainer Spittel wrote:
> Hello,
>
> I like to split a linestring geometry with several points into a
> number of 2 point line segments. I want to use those line segments to
> measure the length of each individual side of a polygon/linestring.
>
> Before writing a function which iterate through each point in the
> input linestring and create a set of 2 point lines, is there a better
> way of archiving the same result?
>
> Cheers
> Rainer
> ------------------------------------------------------------------------
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
More information about the postgis-users
mailing list