[postgis-users] Creating lines from a geometry collection

David Quinn daithiquinn at gmail.com
Sat Feb 25 13:01:16 PST 2012


After re-reading the documentation I realized I missed an example, so I
figured out what I need to do (in part):

SELECT
    ST_GeomFromEWKB((ST_Dump(ST_Split(g.geom, blade.geom))).geom) As geom
FROM
    points as blade,
    lines as g
WHERE
    ST_Intersects(g.geom, blade.geom)

This works fine, but I also want to include a column that is an identifier.
I've tried doing the following:

SELECT
    ST_GeomFromEWKB((ST_Dump(ST_Split(g.geom, blade.geom))).geom) As geom,
    generate_series(1,ST_NumGeometries((ST_Split(g.geom, blade.geom)))) as
gid
FROM
    points as blade,
    lines as g
WHERE
    ST_Intersects(g.geom, blade.geom)

While this does generate a series, it starts counting for each line that it
splits so it is 1,2,3,1,2,1,2,3,4. How can I have a sequential GID (or get
the total geometry count)?

-David

On Sat, Feb 25, 2012 at 2:54 PM, David Quinn <daithiquinn at gmail.com> wrote:

> Hello,
>
> I'm trying to split up a line using points into several smaller lines. I'm
> using ST_Split but I don't understand how to combine the returned values
> into a line. My code is as follows:
>
> SELECT
>    ST_Dump(ST_Split(g.geom, blade.geom)) AS geom
> FROM
>     points as blade,
>     lines as g
> WHERE
>     ST_Intersects(g.geom, blade.geom)
>
> I've tried using a few different geometry constructors such as
> ST_LineFromMultiPoint() and ST_GeomFromEWKB() to convert what ST_Dump()
> returns to create lines but my syntax/approach is not correct. What is the
> correct approach?
>
> Thanks,
> David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20120225/ed74a97b/attachment.html>


More information about the postgis-users mailing list