Here are a few ways to union/merge lines together.

CREATE TABLE tmp (geom geometry);
INSERT INTO tmp VALUES ('LINESTRING(0 0, 1 0, 2 0, 5 0)'::geometry);
INSERT INTO tmp VALUES ('LINESTRING(2 0, 5 0, 6 0, 7 0)'::geometry);
INSERT INTO tmp VALUES ('LINESTRING(1 0, 2 0, 5 0, 6 0)'::geometry);

SELECT AsText(ST_Union(geom)) FROM tmp;
astext --------------------------------------------------------------------
MULTILINESTRING((1 0,2 0),(2 0,5 0),(5 0,6 0),(6 0,7 0),(0 0,1 0))
(1 row)

SELECT AsText(ST_Collect(geom)) FROM tmp;
astext ------------------------------------------------------------------------
MULTILINESTRING((0 0,1 0,2 0,5 0),(2 0,5 0,6 0,7 0),(1 0,2 0,5 0,6 0))
(1 row)

SELECT AsText(ST_Union(geom)) FROM (SELECT ST_Collect(geom) as geom FROM tmp) AS foo; astext ------------------------------------------------------------------------
MULTILINESTRING((0 0,1 0,2 0,5 0),(2 0,5 0,6 0,7 0),(1 0,2 0,5 0,6 0))
(1 row)

SELECT AsText(ST_Union(geom, ST_StartPoint(geom))) FROM (SELECT ST_Collect(geom) as geom FROM tmp) AS foo; astext --------------------------------------------------------------------
MULTILINESTRING((0 0,1 0),(1 0,2 0),(2 0,5 0),(5 0,6 0),(6 0,7 0))
(1 row)

SELECT AsText(ST_LineMerge(geom)) FROM (SELECT ST_Union(geom) AS geom FROM tmp) AS foo; astext -------------------------------------
LINESTRING(0 0,1 0,2 0,5 0,6 0,7 0)
(1 row)


So, to answer your question, yes, you should expect to see a multilinestring of 5 lines.
If you want to sew these lines together, use LineMerge(...)

Hope this helps,

-------------
Kevin Neufeld
Software Developer
Refractions Research Inc.
300-1207 Douglas St.
Victoria, B.C., V8W 2E7

Phone: (250) 383-3022
Email: [EMAIL PROTECTED]



Chris Hermansen wrote:
Good people, I have a dumb question.  Yes it's really a dumb question.

To accompany the dumb question, I have a dumb illustration that will
definitely look really dumb unless viewed with a fixed-width font.

Let's say I have three somewhat coincident lines.  Specifically, let's
say they're precisely colinear, and "from the side", they look like this:

A --------------------------------------
B         --------------------------------------------------
C    ----------------------------------------------

What I'm wondering is, if I st_union() them together, should I expect as
a result a linestring composed of five shorter segments that looks like
this?  Or alternatively, maybe a bunch of short lines, or maybe a
multilinestring?

U ---+----+----------------------------+----------+---------

In other words, with "nodes" where there were endpoints of the input lines?

_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to