12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- -- The GIS technician has been asked by his boss to provide a list
- -- of all sewer lines whose endpoints intersect another sewer line.
- -- The sewerlines table is created with three columns.
- -- The first column, sewer_id, uniquely identifies each sewer line.
- -- The integer class column identifies the type of sewer line,
- -- generally associated with the line's capacity. The sewer
- -- ST_Linestring column stores the sewer line's geometry.
- CREATE TABLE sewerlines (sewer_id integer,
- class integer,
- sewer ST_LineString);
- INSERT INTO sewerlines VALUES(
- 1, 1,
- ST_LineFromText('linestring (42000 10000,46000 14000)',1000)
- );
- INSERT INTO sewerlines VALUES(
- 2, 2,
- ST_LineFromText('linestring (43000 11000,44000 10000)',1000)
- );
- INSERT INTO sewerlines VALUES(
- 3, 2,
- ST_LineFromText('linestring (42000 12000,43000 11000)',1000)
- );
- INSERT INTO sewerlines VALUES(
- 4, 2,
- ST_LineFromText('linestring (44000 12000,45000 11000)',1000)
- );
- INSERT INTO sewerlines VALUES(
- 5, 2,
- ST_LineFromText('linestring (43000 13000,44000 12000)',1000)
- );
- INSERT INTO sewerlines VALUES(
- 6, 2,
- ST_LineFromText('linestring (45000 13000,46000 12000)',1000)
- );
- INSERT INTO sewerlines VALUES(
- 7, 2,
- ST_LineFromText('linestring (44000 14000,45000 13000)',1000)
- );
- -- The query returns an ordered list of sewer_ids that touch one another.
- SELECT s1.sewer_id, s2.sewer_id
- FROM sewerlines s1, sewerlines s2
- WHERE ST_Touches(s1.sewer, s2.sewer);
|