-- The ring_linestring table is created with two columns: -- a smallint column, gid, uniquely identifies the rows, -- while ln1, a ST_LineString column, stores the ST_LineString geometries. CREATE TABLE ring_linestring (gid smallint, ln1 ST_LineString); -- The INSERT statements insert three linestrings into the ln1 column. -- The first row contains a linestring that's not closed and isn't a ring. -- The second row contains a closed and simple linestring that is a ring. -- The third row contains a linestring that is closed but not simple because -- it intersects its own interior. It's also not a ring. INSERT INTO ring_linestring VALUES( 1, ST_LineFromText('linestring (10.02 20.01,10.32 23.98,11.92 25.64)', 1000) ); INSERT INTO ring_linestring VALUES( 2, ST_LineFromText('linestring (10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94, 10.02 20.01)', 1000) ); INSERT INTO ring_linestring VALUES( 3, ST_LineFromText('linestring (15.47 30.12,20.73 22.12,10.83 14.13,16.45 17.24,21.56 13.37,11.23 22.56,19.11 26.78,15.47 30.12)', 1000) ); -- The query returns the results of the ST_IsRing function. -- The first and third rows return false because the linestrings aren't -- rings, while the second row returns t (TRUE) because it is a ring. SELECT gid, ST_IsRing(ln1) Is_it_a_ring FROM ring_linestring;