1# Creating the spatial objects 2USE test; 3CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT); 4CREATE TABLE gis_linestring (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING); 5CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON); 6CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT); 7CREATE TABLE gis_multi_linestring (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING); 8CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON); 9CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION); 10# Inserting POINT Geometry Values 11INSERT INTO gis_point VALUES 12(101, ST_POINTFROMTEXT('POINT(0 0)')), 13(102, ST_POINTFROMTEXT('POINT(1 0)')), 14(103, ST_POINTFROMTEXT('POINT(0 1)')), 15(104, ST_POINTFROMTEXT('POINT(1 1)')), 16(105, ST_POINTFROMTEXT('POINT(-1 1)')); 17INSERT INTO gis_point VALUES 18(106, ST_POINTFROMWKB(ST_ASWKB(POINT(0,0)))), 19(107, ST_POINTFROMWKB(ST_ASWKB(POINT(10,0)))), 20(108, ST_POINTFROMWKB(ST_ASWKB(POINT(0,10)))), 21(109, ST_POINTFROMWKB(ST_ASWKB(POINT(-10,0)))), 22(110, ST_POINTFROMWKB(ST_ASWKB(POINT(0,-10)))); 23INSERT INTO gis_point VALUES 24(111, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1 1)')))), 25(112, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 1e308)')))), 26(113, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 -1e308)')))), 27(114, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 1e308)')))), 28(115, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 -1e308)')))); 29# Displaying the inserted POINT Geometry Data 30SELECT fid, ST_ASTEXT(g) FROM gis_point; 31fid ST_ASTEXT(g) 32101 POINT(0 0) 33102 POINT(1 0) 34103 POINT(0 1) 35104 POINT(1 1) 36105 POINT(-1 1) 37106 POINT(0 0) 38107 POINT(10 0) 39108 POINT(0 10) 40109 POINT(-10 0) 41110 POINT(0 -10) 42111 POINT(1 1) 43112 POINT(1e308 1e308) 44113 POINT(1e308 -1e308) 45114 POINT(-1e308 1e308) 46115 POINT(-1e308 -1e308) 47# Checking the integrity of the above insert statements 48SELECT COUNT(g) FROM gis_point; 49COUNT(g) 5015 51SELECT COUNT(ST_ASTEXT(g)) FROM gis_point; 52COUNT(ST_ASTEXT(g)) 5315 54SELECT COUNT(DISTINCT(g)) FROM gis_point; 55COUNT(DISTINCT(g)) 5613 57SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_point; 58COUNT(DISTINCT(ST_ASTEXT(g))) 5913 60# Inserting LINESTRING Geometry Values 61INSERT INTO gis_linestring VALUES 62(201, ST_LINEFROMTEXT('LINESTRING(0 0,5 5)')), 63(202, ST_LINEFROMTEXT('LINESTRING(0 0,2 2,4 4)')), 64(203, ST_LINEFROMTEXT('LINESTRING(0 0,5 5,10 10)')); 65INSERT INTO gis_linestring VALUES 66(204, ST_LINESTRINGFROMTEXT('LINESTRING(10 10,5 5)')), 67(205, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,12 12,24 24)')), 68(206, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,50 50,100 100)')); 69INSERT INTO gis_linestring VALUES 70(207, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5))))), 71(208, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,10))))), 72(209, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8))))); 73INSERT INTO gis_linestring VALUES 74(210, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5))))), 75(211, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(-50,-50), POINT(10,-10))))), 76(212, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(1e308,1e308), POINT(1e308,-1e308))))); 77INSERT INTO gis_linestring VALUES 78(213, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1e308 1e308,1e308 -1e308)')))), 79(214, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)')))), 80(215, ST_LINESTRINGFROMWKB(ST_ASWKB(ST_LINESTRINGFROMTEXT('LINESTRING(10 10,10 -10,-10 -10,-10 10,10 10)')))); 81# Displaying the inserted LINESTRING Geometry Data 82SELECT fid, ST_ASTEXT(g) FROM gis_linestring; 83fid ST_ASTEXT(g) 84201 LINESTRING(0 0,5 5) 85202 LINESTRING(0 0,2 2,4 4) 86203 LINESTRING(0 0,5 5,10 10) 87204 LINESTRING(10 10,5 5) 88205 LINESTRING(0 0,12 12,24 24) 89206 LINESTRING(0 0,50 50,100 100) 90207 LINESTRING(0 0,5 5) 91208 LINESTRING(0 0,-5 -5,-10 10) 92209 LINESTRING(0 0,2 2,4 4,6 6,8 8) 93210 LINESTRING(0 0,5 5) 94211 LINESTRING(0 0,-50 -50,10 -10) 95212 LINESTRING(0 0,1e308 1e308,1e308 -1e308) 96213 LINESTRING(1e308 1e308,1e308 -1e308) 97214 LINESTRING(1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9) 98215 LINESTRING(10 10,10 -10,-10 -10,-10 10,10 10) 99# Checking the integrity of the above insert statements 100SELECT COUNT(g) FROM gis_linestring; 101COUNT(g) 10215 103SELECT COUNT(ST_ASTEXT(g)) FROM gis_linestring; 104COUNT(ST_ASTEXT(g)) 10515 106SELECT COUNT(DISTINCT(g)) FROM gis_linestring; 107COUNT(DISTINCT(g)) 10813 109SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_linestring; 110COUNT(DISTINCT(ST_ASTEXT(g))) 11113 112# Inserting POLYGON Geometry Values 113INSERT INTO gis_polygon VALUES 114(301, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5, 0 0))')), 115(302, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')), 116(303, ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')); 117INSERT INTO gis_polygon VALUES 118(304, ST_POLYGONFROMTEXT('POLYGON((0 0,0 50,50 50,50 0,0 0))')), 119(305, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))')), 120(306, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')); 121INSERT INTO gis_polygon VALUES 122(307, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))), 123(308, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)))))), 124(309, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), 125LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))); 126INSERT INTO gis_polygon VALUES 127(310, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))), 128(311, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,15), POINT(15,15), POINT(15,10), POINT(10,10)))))), 129(312, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,20), POINT(20,20), POINT(20,10), POINT(10,10)), 130LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14)))))); 131INSERT INTO gis_polygon VALUES 132(313, ST_POLYFROMWKB(ST_ASWKB(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,5 5,0 0))')))), 133(314, ST_POLYFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 10,10 -10,10 0))')))), 134(315, ST_POLYGONFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')))); 135# Displaying the inserted POLYGON Geometry Data 136SELECT fid, ST_ASTEXT(g) FROM gis_polygon; 137fid ST_ASTEXT(g) 138301 POLYGON((0 0,0 5,5 5,0 0)) 139302 POLYGON((0 0,0 5,5 5,5 0,0 0)) 140303 POLYGON((0 0,0 10,10 10,10 0,0 0)) 141304 POLYGON((0 0,0 50,50 50,50 0,0 0)) 142305 POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)) 143306 POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6)) 144307 POLYGON((0 0,0 5,5 5,0 0)) 145308 POLYGON((0 0,0 15,15 15,15 0,0 0)) 146309 POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)) 147310 POLYGON((0 0,0 5,5 5,0 0)) 148311 POLYGON((10 10,10 15,15 15,15 10,10 10)) 149312 POLYGON((10 10,10 20,20 20,20 10,10 10),(14 14,14 16,16 16,16 14,14 14)) 150313 POLYGON((0 0,0 10,10 10,10 0,5 5,0 0)) 151314 POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 10,10 -10,10 0)) 152315 POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6)) 153# Checking the integrity of the above insert statements 154SELECT COUNT(g) FROM gis_polygon; 155COUNT(g) 15615 157SELECT COUNT(ST_ASTEXT(g)) FROM gis_polygon; 158COUNT(ST_ASTEXT(g)) 15915 160SELECT COUNT(DISTINCT(g)) FROM gis_polygon; 161COUNT(DISTINCT(g)) 16211 163SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_polygon; 164COUNT(DISTINCT(ST_ASTEXT(g))) 16511 166# Inserting MULTIPOINT Geometry Values 167INSERT INTO gis_multi_point VALUES 168(401, ST_MPOINTFROMTEXT('MULTIPOINT(0 0)')), 169(402, ST_MPOINTFROMTEXT('MULTIPOINT(0 0,2 2,4 4)')), 170(403, ST_MPOINTFROMTEXT('MULTIPOINT(0 0,5 5,10 10)')); 171INSERT INTO gis_multi_point VALUES 172(404, ST_MULTIPOINTFROMTEXT('MULTIPOINT(0 0,100 100)')), 173(405, ST_MULTIPOINTFROMTEXT('MULTIPOINT(0 0,1e308 1e308)')), 174(406, ST_MULTIPOINTFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308)')); 175INSERT INTO gis_multi_point VALUES 176(407, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0))))), 177(408, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(10,10))))), 178(409, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6))))); 179INSERT INTO gis_multi_point VALUES 180(410, ST_MULTIPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0))))), 181(411, ST_MULTIPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(1e308,1e308))))), 182(412, ST_MULTIPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308), POINT(-1e308,-1e308))))); 183INSERT INTO gis_multi_point VALUES 184(413, ST_MPOINTFROMWKB(ST_ASWKB(ST_MPOINTFROMTEXT('MULTIPOINT(0 0)')))), 185(414, ST_MPOINTFROMWKB(ST_ASWKB(ST_MPOINTFROMTEXT('MULTIPOINT(0 0,1e308 1e308,-1e308 -1e308)')))), 186(415, ST_MPOINTFROMWKB(ST_ASWKB(ST_MPOINTFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308,1e308 1e308)')))); 187# Displaying the inserted MULTIPOINT Geometry Data 188SELECT fid, ST_ASTEXT(g) FROM gis_multi_point; 189fid ST_ASTEXT(g) 190401 MULTIPOINT((0 0)) 191402 MULTIPOINT((0 0),(2 2),(4 4)) 192403 MULTIPOINT((0 0),(5 5),(10 10)) 193404 MULTIPOINT((0 0),(100 100)) 194405 MULTIPOINT((0 0),(1e308 1e308)) 195406 MULTIPOINT((1e308 1e308),(1e308 -1e308),(-1e308 1e308),(-1e308 -1e308)) 196407 MULTIPOINT((0 0)) 197408 MULTIPOINT((0 0),(10 10)) 198409 MULTIPOINT((0 0),(2 2),(4 4),(6 6)) 199410 MULTIPOINT((0 0)) 200411 MULTIPOINT((0 0),(1e308 1e308)) 201412 MULTIPOINT((1e308 1e308),(-1e308 1e308),(1e308 -1e308),(-1e308 -1e308)) 202413 MULTIPOINT((0 0)) 203414 MULTIPOINT((0 0),(1e308 1e308),(-1e308 -1e308)) 204415 MULTIPOINT((1e308 1e308),(1e308 -1e308),(-1e308 1e308),(-1e308 -1e308),(1e308 1e308)) 205# Checking the integrity of the above insert statements 206SELECT COUNT(g) FROM gis_multi_point; 207COUNT(g) 20815 209SELECT COUNT(ST_ASTEXT(g)) FROM gis_multi_point; 210COUNT(ST_ASTEXT(g)) 21115 212SELECT COUNT(DISTINCT(g)) FROM gis_multi_point; 213COUNT(DISTINCT(g)) 21411 215SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_multi_point; 216COUNT(DISTINCT(ST_ASTEXT(g))) 21711 218# Inserting MULTILINESTRING Geometry Values 219INSERT INTO gis_multi_linestring VALUES 220(501, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2))')), 221(502, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4))')), 222(503, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))')); 223INSERT INTO gis_multi_linestring VALUES 224(504, ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,100 100,-100 -100))')), 225(505, ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308))')), 226(506, ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308),(1e308 -1e308,-1e308 1e308))')); 227INSERT INTO gis_multi_linestring VALUES 228(507, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2)))))), 229(508, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)))))), 230(509, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)), 231LINESTRING(POINT(6,6), POINT(8,8), POINT(10,10)))))); 232INSERT INTO gis_multi_linestring VALUES 233(510, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)))))), 234(511, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1,1), POINT(2,2)))))), 235(512, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)), 236LINESTRING(POINT(36,36), POINT(48,48), POINT(50,50)))))); 237INSERT INTO gis_multi_linestring VALUES 238(513, ST_MLINEFROMWKB(ST_ASWKB(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 10),(0 10,10 0))')))), 239(514, ST_MLINEFROMWKB(ST_ASWKB(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,-10 10,0 0),(0 0,-10 -10,10 -10,0 0))')))), 240(515, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0))')))); 241# Displaying the inserted MULTILINESTRING Geometry Data 242SELECT fid, ST_ASTEXT(g) FROM gis_multi_linestring; 243fid ST_ASTEXT(g) 244501 MULTILINESTRING((0 0,2 2)) 245502 MULTILINESTRING((0 0,2 2,4 4)) 246503 MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10)) 247504 MULTILINESTRING((0 0,100 100,-100 -100)) 248505 MULTILINESTRING((1e308 1e308,-1e308 -1e308)) 249506 MULTILINESTRING((1e308 1e308,-1e308 -1e308),(1e308 -1e308,-1e308 1e308)) 250507 MULTILINESTRING((0 0,2 2)) 251508 MULTILINESTRING((0 0,12 12,24 24)) 252509 MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10)) 253510 MULTILINESTRING((0 0,2 2,4 4)) 254511 MULTILINESTRING((0 0,1 1,2 2)) 255512 MULTILINESTRING((0 0,12 12,24 24),(36 36,48 48,50 50)) 256513 MULTILINESTRING((0 0,10 10),(0 10,10 0)) 257514 MULTILINESTRING((0 0,10 10,-10 10,0 0),(0 0,-10 -10,10 -10,0 0)) 258515 MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0)) 259# Checking the integrity of the above insert statements 260SELECT COUNT(g) FROM gis_multi_linestring; 261COUNT(g) 26215 263SELECT COUNT(ST_ASTEXT(g)) FROM gis_multi_linestring; 264COUNT(ST_ASTEXT(g)) 26515 266SELECT COUNT(DISTINCT(g)) FROM gis_multi_linestring; 267COUNT(DISTINCT(g)) 26812 269SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_multi_linestring; 270COUNT(DISTINCT(ST_ASTEXT(g))) 27112 272# Inserting MULTIPOLGYON Geometry Values 273INSERT INTO gis_multi_polygon VALUES 274(601, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))')), 275(602, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)),((5 5,5 10,10 10,5 5)))')), 276(603, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))')); 277INSERT INTO gis_multi_polygon VALUES 278(604, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5, 0 0)))')), 279(605, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,0 -2,-2 -2, 0 0)))')), 280(606, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,5 5,-5 5,0 0)),((0 0,-5 -5,5 -5,0 0)))')); 281INSERT INTO gis_multi_polygon VALUES 282(607, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))))))), 283(608, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 284LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))), 285(609, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))), 286POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0))))))); 287INSERT INTO gis_multi_polygon VALUES 288(610, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0))))))), 289(611, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(10,10), POINT(20,10), POINT(20,20), POINT(10,20), POINT(10,10)), 290LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14))))))), 291(612, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), 292LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), 293POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0))))))); 294INSERT INTO gis_multi_polygon VALUES 295(613, ST_MPOLYFROMWKB(ST_ASWKB(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,5 5,5 -5,0 0)),((0 0,-5 5,-5 -5,0 0)))')))), 296(614, ST_MPOLYFROMWKB(ST_ASWKB(ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,10 10,-10 10,0 0)),((0 0,-10 -10,10 -10,0 0)))')))), 297(615, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 0,5 -5,0 0)))')))); 298# Displaying the inserted MULTIPOLYGON Geometry Data 299SELECT fid, ST_ASTEXT(g) FROM gis_multi_polygon; 300fid ST_ASTEXT(g) 301601 MULTIPOLYGON(((0 0,0 5,5 5,0 0))) 302602 MULTIPOLYGON(((0 0,0 5,5 5,0 0)),((5 5,5 10,10 10,5 5))) 303603 MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))) 304604 MULTIPOLYGON(((0 0,0 5,5 5,0 0))) 305605 MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,0 -2,-2 -2,0 0))) 306606 MULTIPOLYGON(((0 0,5 5,-5 5,0 0)),((0 0,-5 -5,5 -5,0 0))) 307607 MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0))) 308608 MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))) 309609 MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0)),((0 0,-5 0,-5 -5,0 -5,0 0))) 310610 MULTIPOLYGON(((0 0,-5 0,-5 -5,0 -5,0 0))) 311611 MULTIPOLYGON(((10 10,20 10,20 20,10 20,10 10),(14 14,14 16,16 16,16 14,14 14))) 312612 MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,-5 0,-5 -5,0 -5,0 0))) 313613 MULTIPOLYGON(((0 0,5 5,5 -5,0 0)),((0 0,-5 5,-5 -5,0 0))) 314614 MULTIPOLYGON(((0 0,10 10,-10 10,0 0)),((0 0,-10 -10,10 -10,0 0))) 315615 MULTIPOLYGON(((0 0,5 5,10 0,5 -5,0 0))) 316# Checking the integrity of the above insert statements 317SELECT COUNT(g) FROM gis_multi_polygon; 318COUNT(g) 31915 320SELECT COUNT(ST_ASTEXT(g)) FROM gis_multi_polygon; 321COUNT(ST_ASTEXT(g)) 32215 323SELECT COUNT(DISTINCT(g)) FROM gis_multi_polygon; 324COUNT(DISTINCT(g)) 32514 326SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_multi_polygon; 327COUNT(DISTINCT(ST_ASTEXT(g))) 32814 329# Inserting GEOMETRYCOLLECTION Geometry Values 330INSERT INTO gis_geometrycollection VALUES 331(701, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')), 332(702, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), 333(703, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5), POLYGON((0 0,0 10,10 10,10 0,0 0)))')); 334INSERT INTO gis_geometrycollection VALUES 335(704, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), 336(705, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' 337 'LINESTRING(0 0,10 10),' 338 'POLYGON((0 0,0 10,10 10,10 0, 0 0)))')), 339(706, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(MULTIPOINT(0 0,5 5,10 10),' 340 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' 341 'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),' 342 '((0 0,-10 0,-10 -10,0 -10,0 0))))')); 343INSERT INTO gis_geometrycollection VALUES 344(707, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0))))), 345(708, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), 346LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), 347POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), 348LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))), 349(709, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(0,0), POINT(5,5), POINT(10,10)), 350MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), 351LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))), 352MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), 353LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), 354POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0)))))))); 355INSERT INTO gis_geometrycollection VALUES 356(710, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), 357LINESTRING(POINT(0,0), POINT(100,100)))))), 358(711, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(10,10), 359LINESTRING(POINT(10,10), POINT(12,12), POINT(14,14), POINT(16,16), POINT(18,18)), 360POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), 361LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))), 362(712, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(10,10), POINT(15,15), POINT(20,20)), 363MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), 364LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))), 365MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), 366LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), 367POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0)))))))); 368INSERT INTO gis_geometrycollection VALUES 369(713, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 370 'POINT(0 0),' 371 'LINESTRING(0 0,10 10),' 372 'POLYGON((0 0,0 10,10 10,10 0, 0 0)),' 373 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),' 374 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' 375 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))')))), 376(714, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 377 'GEOMETRYCOLLECTION(' 378 'POINT(0 0)),' 379 'GEOMETRYCOLLECTION(' 380 'LINESTRING(0 0,10 10)),' 381 'GEOMETRYCOLLECTION(' 382 'POLYGON((0 0,0 10,10 10,10 0, 0 0))),' 383 'GEOMETRYCOLLECTION(' 384 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10)),' 385 'GEOMETRYCOLLECTION(' 386 'MULTILINESTRING((0 0,10 10),(0 10,10 0))),' 387 'GEOMETRYCOLLECTION(' 388 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))))')))), 389(715, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 390 'GEOMETRYCOLLECTION(),' 391 'POINT(0 0),' 392 'GEOMETRYCOLLECTION(' 393 'LINESTRING(0 0,10 10),' 394 'GEOMETRYCOLLECTION(' 395 'GEOMETRYCOLLECTION())),' 396 'GEOMETRYCOLLECTION(),' 397 'GEOMETRYCOLLECTION(' 398 'GEOMETRYCOLLECTION()),' 399 'POLYGON((0 0,0 10,10 10,10 0, 0 0)),' 400 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),' 401 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' 402 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))')))); 403# Displaying the inserted GEOMETRYCOLLECTION Geometry Data 404SELECT fid, ST_ASTEXT(g) FROM gis_geometrycollection; 405fid ST_ASTEXT(g) 406701 GEOMETRYCOLLECTION(POINT(0 0)) 407702 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) 408703 GEOMETRYCOLLECTION(POINT(5 5),POLYGON((0 0,0 10,10 10,10 0,0 0))) 409704 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) 410705 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10),POLYGON((0 0,0 10,10 10,10 0,0 0))) 411706 GEOMETRYCOLLECTION(MULTIPOINT((0 0),(5 5),(10 10)),MULTILINESTRING((0 0,10 10),(0 10,10 0)),MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 0,-10 0,-10 -10,0 -10,0 0)))) 412707 GEOMETRYCOLLECTION(POINT(0 0)) 413708 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,2 2,4 4,6 6,8 8),POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))) 414709 GEOMETRYCOLLECTION(MULTIPOINT((0 0),(5 5),(10 10)),MULTILINESTRING((0 0,2 2,4 4,6 6,8 8),(10 10,5 5,0 10)),MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,-10 0,-10 -10,0 0)))) 415710 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,100 100)) 416711 GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,12 12,14 14,16 16,18 18),POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))) 417712 GEOMETRYCOLLECTION(MULTIPOINT((10 10),(15 15),(20 20)),MULTILINESTRING((0 0,2 2,4 4,6 6,8 8),(10 10,5 5,0 10)),MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,-10 0,-10 -10,0 0)))) 418713 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10),POLYGON((0 0,0 10,10 10,10 0,0 0)),MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10)),MULTILINESTRING((0 0,10 10),(0 10,10 0)),MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))) 419714 GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)),GEOMETRYCOLLECTION(LINESTRING(0 0,10 10)),GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0))),GEOMETRYCOLLECTION(MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10))),GEOMETRYCOLLECTION(MULTILINESTRING((0 0,10 10),(0 10,10 0))),GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))) 420715 GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY,POINT(0 0),GEOMETRYCOLLECTION(LINESTRING(0 0,10 10),GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY)),GEOMETRYCOLLECTION EMPTY,GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY),POLYGON((0 0,0 10,10 10,10 0,0 0)),MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10)),MULTILINESTRING((0 0,10 10),(0 10,10 0)),MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))) 421# Checking the integrity of the above insert statements 422SELECT COUNT(g) FROM gis_geometrycollection; 423COUNT(g) 42415 425SELECT COUNT(ST_ASTEXT(g)) FROM gis_geometrycollection; 426COUNT(ST_ASTEXT(g)) 42715 428SELECT COUNT(DISTINCT(g)) FROM gis_geometrycollection; 429COUNT(DISTINCT(g)) 43013 431SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_geometrycollection; 432COUNT(DISTINCT(ST_ASTEXT(g))) 43313 434#==================================================================================== 435# ST_X(point) 436#==================================================================================== 437SELECT ST_X(ST_POINTFROMTEXT('POINT(0 0)')); 438ST_X(ST_POINTFROMTEXT('POINT(0 0)')) 4390 440SELECT ST_X(ST_POINTFROMTEXT('POINT(10 10)')); 441ST_X(ST_POINTFROMTEXT('POINT(10 10)')) 44210 443SELECT ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)')); 444ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)')) 4451e308 446SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111)))); 447ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111)))) 4481.1111 449SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000)))); 450ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000)))) 45110 452SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308)))); 453ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308)))) 454-1e308 455#==================================================================================== 456# ST_Y(point) 457#==================================================================================== 458SELECT ST_Y(ST_POINTFROMTEXT('POINT(0 0)')); 459ST_Y(ST_POINTFROMTEXT('POINT(0 0)')) 4600 461SELECT ST_Y(ST_POINTFROMTEXT('POINT(10 10)')); 462ST_Y(ST_POINTFROMTEXT('POINT(10 10)')) 46310 464SELECT ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)')); 465ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)')) 4661e308 467SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111)))); 468ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111)))) 469-1.1111 470SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000)))); 471ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000)))) 47210 473SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308)))); 474ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308)))) 475-1e308 476#==================================================================================== 477# ST_ISCLOSED(linestring) 478#==================================================================================== 479SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')); 480ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')) 4810 482SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2,0 0)')); 483ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2,0 0)')) 4841 485SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0)')); 486ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0)')) 4870 488SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')); 489ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')) 4901 491SELECT ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10))))); 492ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10))))) 4930 494SELECT ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10), POINT(0,0))))); 495ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10), POINT(0,0))))) 4961 497SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))); 498ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))) 4990 500SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))); 501ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))) 5021 503#==================================================================================== 504# ST_LENGTH(linestring) 505#==================================================================================== 506SELECT ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')); 507ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')) 5082.8284271247461903 509SELECT ST_LENGTH(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')); 510ST_LENGTH(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')) 51120 512SELECT ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))); 513ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))) 51428.284271247461902 515SELECT ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))); 516ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))) 51724.14213562373095 518SELECT ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))); 519ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))) 52038.2842712474619 521SELECT ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))); 522ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))) 52348.2842712474619 524# Cartesian SRS 525SELECT ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 2000)); 526ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 2000)) 52714.142135623730951 528# Geographic SRS 529# Different result on Windows and Linux, need to use ROUND 530SELECT ROUND(ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 4326)),7); 531ROUND(ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 4326)),7) 5321565127.2549243 533# Infinite Linestring 534SELECT ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(1e-300 0,1e300 0,1e-300 0,1e300 0,1e-300 0, 1e300 0, 1e-300 0)', 0)); 535ERROR 22003: Length value is out of range in 'st_length' 536#==================================================================================== 537# ST_NUMPOINTS(linestring) 538#==================================================================================== 539SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')); 540ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')) 5412 542SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)')); 543ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)')) 5442 545SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)')); 546ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)')) 5472 548SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')); 549ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')) 5505 551SELECT ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))); 552ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))) 5533 554SELECT ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))); 555ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))) 5564 557SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))); 558ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))) 5594 560SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))); 561ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))) 5625 563#==================================================================================== 564# ST_STARTPOINT(linestring) 565#==================================================================================== 566SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'))); 567ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'))) 568POINT(0 0) 569SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'))); 570ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'))) 571POINT(0 0) 572SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'))); 573ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'))) 574POINT(1e308 1e308) 575SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))); 576ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))) 577POINT(0 0) 578SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))))); 579ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))))) 580POINT(0 0) 581SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))))); 582ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))))) 583POINT(0 0) 584SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))))); 585ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))))) 586POINT(0 0) 587SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))))); 588ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))))) 589POINT(0 0) 590#==================================================================================== 591# ST_ENDPOINT(linestring) 592#==================================================================================== 593SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'))); 594ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'))) 595POINT(2 2) 596SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'))); 597ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'))) 598POINT(1e308 1e308) 599SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'))); 600ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'))) 601POINT(-1e308 -1e308) 602SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))); 603ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))) 604POINT(0 0) 605SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))))); 606ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))))) 607POINT(-10 -10) 608SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))))); 609ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))))) 610POINT(0 0) 611SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))))); 612ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))))) 613POINT(0 10) 614SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))))); 615ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))))) 616POINT(0 0) 617#==================================================================================== 618# ST_POINTN(linestring, number) 619#==================================================================================== 620SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'), 1)); 621ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'), 1)) 622POINT(0 0) 623SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'), 2)); 624ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'), 2)) 625POINT(1e308 1e308) 626SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'), 2)); 627ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'), 2)) 628POINT(-1e308 -1e308) 629SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'), 3)); 630ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'), 3)) 631POINT(5 5) 632SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))), 3)); 633ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))), 3)) 634POINT(-10 -10) 635SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))), 4)); 636ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))), 4)) 637POINT(0 0) 638SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))), 4)); 639ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))), 4)) 640POINT(0 10) 641SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))), 4)); 642ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))), 4)) 643POINT(0 10) 644#==================================================================================== 645# ST_NUMINTERIORRINGS(polygon) 646#==================================================================================== 647SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')); 648ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')) 6490 650SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))')); 651ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))')) 6521 653SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')); 654ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')) 6552 656SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))')); 657ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))')) 6580 659SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))); 660ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))) 6610 662SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 663LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))); 664ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 665LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))) 6661 667SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 668LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)), 669LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), POINT(10,8), POINT(8,8)))))); 670ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 671LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)), 672LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), PO 6732 674SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110)))))); 675ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110)))))) 6760 677#==================================================================================== 678# ST_EXTERIORRING(polygon) 679#==================================================================================== 680SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'))); 681ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'))) 682LINESTRING(0 0,0 5,5 5,5 0,0 0) 683SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'))); 684ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'))) 685LINESTRING(0 0,0 10,10 10,10 0,0 0) 686SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'))); 687ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'))) 688LINESTRING(0 0,0 10,10 10,10 0,0 0) 689SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'))); 690ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'))) 691LINESTRING(0 0,0 -115,-115 -115,-115 0,0 0) 692SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))))); 693ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))))) 694LINESTRING(0 0,0 5,5 5,0 0) 695SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 696LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))); 697ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 698LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))) 699LINESTRING(0 0,0 15,15 15,15 0,0 0) 700SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 701LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)), 702LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), POINT(10,8), POINT(8,8))))))); 703ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 704LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)), 705LINESTRING(POINT(8,8), POINT(8,10), POINT(10,1 706LINESTRING(0 0,0 15,15 15,15 0,0 0) 707SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))))); 708ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))))) 709LINESTRING(110 110,110 5,5 5,110 110) 710#==================================================================================== 711# ST_INTERIORRINGN(polygon, number) 712#==================================================================================== 713SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'), 1)); 714ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'), 1)) 715NULL 716SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'), 1)); 717ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'), 1)) 718LINESTRING(4 4,4 6,6 6,6 4,4 4) 719SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2)); 720ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2)) 721LINESTRING(6 6,6 8,8 8,8 6,6 6) 722SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'), 1)); 723ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'), 1)) 724NULL 725SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), 1)); 726ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), 1)) 727NULL 728SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 729LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))), 1)); 730ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 731LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))), 1)) 732LINESTRING(4 4,4 6,6 6,6 4,4 4) 733SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 734LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)), 735LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), POINT(10,8), POINT(8,8))))), 2)); 736ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)), 737LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)), 738LINESTRING(POINT(8,8), POINT(8,10), POINT(10, 739LINESTRING(8 8,8 10,10 10,10 8,8 8) 740SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))), 2)); 741ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))), 2)) 742NULL 743#==================================================================================== 744# ST_ISCLOSED(multilinestring) 745#==================================================================================== 746SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))')); 747ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))')) 7481 749SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,-10 0,0 0))')); 750ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,-10 0,0 0))')) 7510 752SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))')); 753ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))')) 7541 755SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0,0 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))')); 756ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0,0 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))')) 7570 758SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0)))))); 759ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0)))))) 7601 761SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e308,1e308)))))); 762ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e308,1e308)))))) 7630 764SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(10,10), POINT(0,0)), 765LINESTRING(POINT(1e308,1e308), POINT(-1e308,-1e308), POINT(1e308,1e308)))))); 766ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(10,10), POINT(0,0)), 767LINESTRING(POINT(1e308,1e308), POINT(-1e308,-1e308), POINT(1e308,1e308)))))) 7681 769SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10)))))); 770ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10)))))) 7710 772#==================================================================================== 773# ST_LENGTH(multilinestring) 774#==================================================================================== 775SELECT ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))')); 776ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))')) 77720 778SELECT ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0),(0 0,-10 0,0 0))')); 779ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0),(0 0,-10 0,0 0))')) 78040 781SELECT ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))')); 782ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))')) 78356.568542494923804 784SELECT ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))')); 785ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))')) 78620 787SELECT ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0)))))); 788ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0)))))) 7890 790SELECT ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10)))))); 791ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10)))))) 79214142135623.730951 793# Cartesian SRS 794SELECT ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 2000)); 795ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 2000)) 79620 797# Geographic SRS 798SELECT ROUND(ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 4326)), 7); 799ROUND(ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 4326)), 7) 8002218953.5324189 801#==================================================================================== 802# ST_NUMGEOMETRIES(geometrycollection) 803#==================================================================================== 804SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')); 805ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')) 8061 807SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 808 'POINT(0 0),' 809 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 810 'POLYGON((0 0,0 5,5 5,5 0,0 0)))')); 811ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 812 'POINT(0 0),' 813 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 814 8153 816SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 817 'MULTIPOINT(0 0),' 818 'MULTILINESTRING((0 0,5 5,10 10),' 819 '(0 0,-5 -5,-10 -10)),' 820 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),' 821 '((5 5,5 10,10 10,10 5,5 5))))')); 822ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 823 'MULTIPOINT(0 0),' 824 'MULTILINESTRING((0 0,5 5,10 10),' 825 8263 827SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 828 'POINT(0 0),' 829 'GEOMETRYCOLLECTION(),' 830 'GEOMETRYCOLLECTION(' 831 'GEOMETRYCOLLECTION()),' 832 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10))')); 833ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 834 'POINT(0 0),' 835 'GEOMETRYCOLLECTION(),' 836 8374 838SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 839POINT(10,10), 840LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), 841POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 842LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))); 843ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 844POINT(10,10), 845LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), 846POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 847LINESTRING(POINT(4,4 8483 849SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 850MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 851MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 852LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))), 853MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))), 854POLYGON(LINESTRING(POINT(2,2), POINT(2,13), POINT(13,13), POINT(13,2), POINT(2,2)), 855LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))))); 856ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 857MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 858MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 859LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10 8603 861SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 862POINT(0,0), 863LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 864POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 865LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), 866MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 867MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 868LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))), 869MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))), 870POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2)))))))); 871ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 872POINT(0,0), 873LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 874POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 875LINESTRING(POINT(4,4), P 8766 877#==================================================================================== 878# ST_GEOMETRYN(geometrycollection, number) 879#==================================================================================== 880SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))'), 1)); 881ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))'), 1)) 882POINT(0 0) 883SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 884 'POINT(0 0),' 885 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 886 'POLYGON((0 0,0 5,5 5,5 0,0 0)))'), 2)); 887ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 888 'POINT(0 0),' 889 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 890 891LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10) 892SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 893 'MULTIPOINT(0 0),' 894 'MULTILINESTRING((0 0,5 5,10 10),' 895 '(0 0,-5 -5,-10 -10)),' 896 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),' 897 '((5 5,5 10,10 10,10 5,5 5))))'), 3)); 898ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 899 'MULTIPOINT(0 0),' 900 'MULTILINESTRING((0 0,5 5,10 10),' 901 902MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))) 903SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 904 'POINT(0 0),' 905 'GEOMETRYCOLLECTION(),' 906 'GEOMETRYCOLLECTION(' 907 'GEOMETRYCOLLECTION()),' 908 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10))'), 2)); 909ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(' 910 'POINT(0 0),' 911 'GEOMETRYCOLLECTION(),' 912 913GEOMETRYCOLLECTION EMPTY 914SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 915POINT(10,10), 916LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), 917POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 918LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), 2)); 919ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 920POINT(10,10), 921LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), 922POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 923LINESTRING(POI 924LINESTRING(0 0,2 2,4 4,6 6,8 8) 925SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 926MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 927MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 928LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))), 929MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))), 930POLYGON(LINESTRING(POINT(2,2), POINT(2,13), POINT(13,13), POINT(13,2), POINT(2,2)), 931LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))), 3)); 932ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 933MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 934MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 935LINESTRING(POINT(0,0), POINT(-5,-5), POINT(- 936MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((2 2,2 13,13 13,13 2,2 2),(4 4,4 6,6 6,6 4,4 4))) 937SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 938POINT(0,0), 939LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 940POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 941LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), 942MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 943MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 944LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))), 945MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))), 946POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2))))))), 2)); 947ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 948POINT(0,0), 949LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 950POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 951LINESTRING(POINT(4 952LINESTRING(0 0,2 2,4 4,6 6) 953SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 954POINT(0,0), 955LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 956POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 957LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), 958MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 959MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 960LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))), 961MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))), 962POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2))))))), 5)); 963ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 964POINT(0,0), 965LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 966POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 967LINESTRING(POINT(4 968MULTILINESTRING((0 0,5 5,10 10),(0 0,-5 -5,-10 -10)) 969SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 970POINT(0,0), 971LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 972POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 973LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), 974MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)), 975MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)), 976LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))), 977MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))), 978POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2))))))), 6)); 979ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION( 980POINT(0,0), 981LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)), 982POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), 983LINESTRING(POINT(4 984MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((2 2,2 3,3 3,3 2,2 2))) 985#==================================================================================== 986# ST_X(point) 987#==================================================================================== 988SELECT ST_X(); 989ERROR 42000: Incorrect parameter count in the call to native function 'ST_X' 990SELECT ST_X(NULL); 991ST_X(NULL) 992NULL 993SELECT ST_X(ST_POINTFROMWKB()); 994ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMWKB' 995SELECT ST_X(ST_POINTFROMWKB(NULL)); 996ST_X(ST_POINTFROMWKB(NULL)) 997NULL 998SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1)))); 999ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))))' at line 1 1000SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1,a)))); 1001ERROR 42S22: Unknown column 'a' in 'field list' 1002SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(a,b)))); 1003ERROR 42S22: Unknown column 'a' in 'field list' 1004SELECT ST_X(ST_POINTFROMTEXT()); 1005ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMTEXT' 1006SELECT ST_X(ST_POINTFROMTEXT('NULL')); 1007ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1008SELECT ST_X(ST_POINTFROMTEXT('POINT()')); 1009ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1010SELECT ST_X(ST_POINTFROMTEXT('POINT(1)')); 1011ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1012SELECT ST_X(ST_POINTFROMTEXT('POINT(a 1)')); 1013ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1014SELECT ST_X(ST_POINTFROMTEXT('POINT(1 1,2)')); 1015ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1016SELECT ST_X(ST_POINTFROMTEXT('POINT('!' 0)')); 1017ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0)'))' at line 1 1018#==================================================================================== 1019# ST_Y(point) 1020#==================================================================================== 1021SELECT ST_Y(); 1022ERROR 42000: Incorrect parameter count in the call to native function 'ST_Y' 1023SELECT ST_Y(NULL); 1024ST_Y(NULL) 1025NULL 1026SELECT ST_Y(ST_POINTFROMWKB()); 1027ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMWKB' 1028SELECT ST_Y(ST_POINTFROMWKB(NULL)); 1029ST_Y(ST_POINTFROMWKB(NULL)) 1030NULL 1031SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1)))); 1032ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))))' at line 1 1033SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1,a)))); 1034ERROR 42S22: Unknown column 'a' in 'field list' 1035SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(a,b)))); 1036ERROR 42S22: Unknown column 'a' in 'field list' 1037SELECT ST_Y(ST_POINTFROMTEXT()); 1038ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMTEXT' 1039SELECT ST_Y(ST_POINTFROMTEXT('NULL')); 1040ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1041SELECT ST_Y(ST_POINTFROMTEXT('POINT()')); 1042ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1043SELECT ST_Y(ST_POINTFROMTEXT('POINT(1)')); 1044ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1045SELECT ST_Y(ST_POINTFROMTEXT('POINT(a 1)')); 1046ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1047SELECT ST_Y(ST_POINTFROMTEXT('POINT(1 1,2)')); 1048ERROR 22023: Invalid GIS data provided to function st_pointfromtext. 1049SELECT ST_Y(ST_POINTFROMTEXT('POINT('!' 0)')); 1050ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0)'))' at line 1 1051#==================================================================================== 1052# ST_ISCLOSED(linestring) 1053#==================================================================================== 1054SELECT ST_ISCLOSED(); 1055ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED' 1056SELECT ST_ISCLOSED(NULL); 1057ST_ISCLOSED(NULL) 1058NULL 1059SELECT ST_ISCLOSED(ST_LINEFROMWKB()); 1060ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB' 1061SELECT ST_ISCLOSED(ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(2,2))), 2); 1062ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED' 1063SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(LINESTRING(POINT(a,1), POINT(2,2)))); 1064ERROR 42S22: Unknown column 'a' in 'field list' 1065SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(LINESTRING(POINT(a,1), POINT(2,b)))); 1066ERROR 42S22: Unknown column 'a' in 'field list' 1067SELECT ST_ISCLOSED(ST_LINEFROMTEXT()); 1068ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT' 1069SELECT ST_ISCLOSED(ST_LINEFROMTEXT('NULL')); 1070ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1071SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING()')); 1072ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1073SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0)')); 1074ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1075SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1')); 1076ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1077SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)')); 1078ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1079SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)')); 1080ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1 1081#==================================================================================== 1082# ST_NUMPOINTS(linestring) 1083#==================================================================================== 1084SELECT ST_NUMPOINTS(); 1085ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMPOINTS' 1086SELECT ST_NUMPOINTS(NULL); 1087ST_NUMPOINTS(NULL) 1088NULL 1089SELECT ST_NUMPOINTS(ST_LINEFROMWKB()); 1090ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB' 1091SELECT ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2)))), 2); 1092ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMPOINTS' 1093SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2))))); 1094ERROR 42S22: Unknown column 'a' in 'field list' 1095SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b))))); 1096ERROR 42S22: Unknown column 'a' in 'field list' 1097SELECT ST_NUMPOINTS(ST_LINEFROMTEXT()); 1098ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT' 1099SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('NULL')); 1100ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1101SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING()')); 1102ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1103SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0)')); 1104ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1105SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1')); 1106ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1107SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)')); 1108ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1109SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)')); 1110ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1 1111#==================================================================================== 1112# ST_STARTPOINT(linestring) 1113#==================================================================================== 1114SELECT ST_STARTPOINT(); 1115ERROR 42000: Incorrect parameter count in the call to native function 'ST_STARTPOINT' 1116SELECT ST_STARTPOINT(NULL); 1117ST_STARTPOINT(NULL) 1118NULL 1119SELECT ST_STARTPOINT(ST_LINEFROMWKB()); 1120ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB' 1121SELECT ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2)))), 2); 1122ERROR 42000: Incorrect parameter count in the call to native function 'ST_STARTPOINT' 1123SELECT ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2))))); 1124ERROR 42S22: Unknown column 'a' in 'field list' 1125SELECT ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b))))); 1126ERROR 42S22: Unknown column 'a' in 'field list' 1127SELECT ST_STARTPOINT(ST_LINEFROMTEXT()); 1128ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT' 1129SELECT ST_STARTPOINT(ST_LINEFROMTEXT('NULL')); 1130ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1131SELECT ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING()')); 1132ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1133SELECT ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0)')); 1134ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1135SELECT ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1')); 1136ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1137SELECT ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)')); 1138ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1139SELECT ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)')); 1140ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1 1141#==================================================================================== 1142# ST_ENDPOINT(linestring) 1143#==================================================================================== 1144SELECT ST_ENDPOINT(); 1145ERROR 42000: Incorrect parameter count in the call to native function 'ST_ENDPOINT' 1146SELECT ST_ENDPOINT(NULL); 1147ST_ENDPOINT(NULL) 1148NULL 1149SELECT ST_ENDPOINT(ST_LINEFROMWKB()); 1150ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB' 1151SELECT ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2)))), 2); 1152ERROR 42000: Incorrect parameter count in the call to native function 'ST_ENDPOINT' 1153SELECT ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2))))); 1154ERROR 42S22: Unknown column 'a' in 'field list' 1155SELECT ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b))))); 1156ERROR 42S22: Unknown column 'a' in 'field list' 1157SELECT ST_ENDPOINT(ST_LINEFROMTEXT()); 1158ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT' 1159SELECT ST_ENDPOINT(ST_LINEFROMTEXT('NULL')); 1160ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1161SELECT ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING()')); 1162ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1163SELECT ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0)')); 1164ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1165SELECT ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1')); 1166ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1167SELECT ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)')); 1168ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1169SELECT ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)')); 1170ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1 1171#==================================================================================== 1172# ST_POINTN(linestring, number) 1173#==================================================================================== 1174SELECT ST_POINTN(); 1175ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN' 1176SELECT ST_POINTN(NULL); 1177ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN' 1178SELECT ST_POINTN(NULL, 1); 1179ST_POINTN(NULL, 1) 1180NULL 1181SELECT ST_POINTN(ST_LINEFROMWKB()); 1182ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN' 1183SELECT ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2))))); 1184ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN' 1185SELECT ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2)))), 1); 1186ERROR 42S22: Unknown column 'a' in 'field list' 1187SELECT ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b)))), 1); 1188ERROR 42S22: Unknown column 'a' in 'field list' 1189SELECT ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(1,1), POINT(2,2)))), a); 1190ERROR 42S22: Unknown column 'a' in 'field list' 1191SELECT ST_POINTN(ST_LINEFROMTEXT()); 1192ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN' 1193SELECT ST_POINTN(ST_LINEFROMTEXT('NULL')); 1194ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN' 1195SELECT ST_POINTN(ST_LINEFROMTEXT('NULL'), 1); 1196ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1197SELECT ST_POINTN(ST_LINEFROMTEXT('LINESTRING()'), 2); 1198ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1199SELECT ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0)'), 3); 1200ERROR 22023: Invalid GIS data provided to function st_linefromtext. 1201SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1'), 4); 1202ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1203SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)'), 5); 1204ERROR 22023: Invalid GIS data provided to function st_linestringfromtext. 1205SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)'), 6); 1206ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'), 6)' at line 1 1207SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 0); 1208ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 0) 1209NULL 1210SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1); 1211ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1) 1212NULL 1213SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1024); 1214ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1024) 1215NULL 1216SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 10000); 1217ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 10000) 1218NULL 1219SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 1234567890); 1220ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 1234567890) 1221NULL 1222SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 'a'); 1223ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 'a') 1224NULL 1225Warnings: 1226Warning 1292 Truncated incorrect INTEGER value: 'a' 1227#==================================================================================== 1228# ST_NUMINTERIORRINGS(polygon) 1229#==================================================================================== 1230SELECT ST_NUMINTERIORRINGS(); 1231ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMINTERIORRINGS' 1232SELECT ST_NUMINTERIORRINGS(NULL); 1233ST_NUMINTERIORRINGS(NULL) 1234NULL 1235SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB()); 1236ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMWKB' 1237SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0))))), 1); 1238ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMINTERIORRINGS' 1239SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(0,1), POINT(1,1), POINT(0,0)))))); 1240ERROR 42S22: Unknown column 'a' in 'field list' 1241SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(b,1), POINT(1,1), POINT(0,0)))))); 1242ERROR 42S22: Unknown column 'a' in 'field list' 1243SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT()); 1244ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMTEXT' 1245SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('NULL')); 1246ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1247SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON(())')); 1248ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1249SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0))')); 1250ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1251SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 4,4 4,0 0)')); 1252ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1253SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,2 0,2))')); 1254ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1255SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 a,0 0))')); 1256ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1257SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON(('!' 0,2 0,2 4,0 0))')); 1258ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,2 0,2 4,0 0))'))' at line 1 1259#==================================================================================== 1260# ST_EXTERIORRING(polygon) 1261#==================================================================================== 1262SELECT ST_EXTERIORRING(); 1263ERROR 42000: Incorrect parameter count in the call to native function 'ST_EXTERIORRING' 1264SELECT ST_EXTERIORRING(NULL); 1265ST_EXTERIORRING(NULL) 1266NULL 1267SELECT ST_EXTERIORRING(ST_POLYFROMWKB()); 1268ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMWKB' 1269SELECT ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0))))), 1); 1270ERROR 42000: Incorrect parameter count in the call to native function 'ST_EXTERIORRING' 1271SELECT ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(0,1), POINT(1,1), POINT(0,0)))))); 1272ERROR 42S22: Unknown column 'a' in 'field list' 1273SELECT ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(b,1), POINT(1,1), POINT(0,0)))))); 1274ERROR 42S22: Unknown column 'a' in 'field list' 1275SELECT ST_EXTERIORRING(ST_POLYFROMTEXT()); 1276ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMTEXT' 1277SELECT ST_EXTERIORRING(ST_POLYFROMTEXT('NULL')); 1278ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1279SELECT ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON(())')); 1280ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1281SELECT ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0))')); 1282ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1283SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 4,4 4,0 0)')); 1284ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1285SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,2 0,2))')); 1286ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1287SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 a,0 0))')); 1288ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1289SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON(('!' 0,2 0,2 4,0 0))')); 1290ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,2 0,2 4,0 0))'))' at line 1 1291#==================================================================================== 1292# ST_INTERIORRINGN(polygon, number) 1293#==================================================================================== 1294SELECT ST_INTERIORRINGN(); 1295ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN' 1296SELECT ST_INTERIORRINGN(NULL); 1297ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN' 1298SELECT ST_INTERIORRINGN(NULL, 1); 1299ST_INTERIORRINGN(NULL, 1) 1300NULL 1301SELECT ST_INTERIORRINGN(ST_POLYFROMWKB()); 1302ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN' 1303SELECT ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0)))))); 1304ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN' 1305SELECT ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(0,1), POINT(1,1), POINT(0,0))))), 1); 1306ERROR 42S22: Unknown column 'a' in 'field list' 1307SELECT ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(b,1), POINT(1,1), POINT(0,0))))), 1); 1308ERROR 42S22: Unknown column 'a' in 'field list' 1309SELECT ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0))))), a); 1310ERROR 42S22: Unknown column 'a' in 'field list' 1311SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT()); 1312ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN' 1313SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT('NULL'), 1); 1314ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1315SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON(())'), 2); 1316ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1317SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0))'), 3); 1318ERROR 22023: Invalid GIS data provided to function st_polyfromtext. 1319SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 4,4 4,0 0)'), 4); 1320ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1321SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,2 0,2))'), 5); 1322ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1323SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 a,0 0))'), 6); 1324ERROR 22023: Invalid GIS data provided to function st_polygonfromtext. 1325SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON(('!' 0,2 0,2 4,0 0))'), 7); 1326ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,2 0,2 4,0 0))'), 7)' at line 1 1327SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 0); 1328ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 0) 1329NULL 1330SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1); 1331ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1) 1332NULL 1333SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1024); 1334ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1024) 1335NULL 1336SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 10000); 1337ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 10000) 1338NULL 1339SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 123456789); 1340ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 123456789) 1341NULL 1342#==================================================================================== 1343# ST_ISCLOSED(multilinestring) 1344#==================================================================================== 1345SELECT ST_ISCLOSED(); 1346ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED' 1347SELECT ST_ISCLOSED(NULL); 1348ST_ISCLOSED(NULL) 1349NULL 1350SELECT ST_ISCLOSED(ST_MLINEFROMWKB()); 1351ERROR 42000: Incorrect parameter count in the call to native function 'ST_MLINEFROMWKB' 1352SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(1,1), POINT(2,2))))), 1); 1353ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED' 1354SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(1,1), POINT(2,2), POINT(3,3), POINT(a,4)))))); 1355ERROR 42S22: Unknown column 'a' in 'field list' 1356SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(1,1), POINT(2,2)), LINESTRING(POINT(3,3), POINT(a,4)))))); 1357ERROR 42S22: Unknown column 'a' in 'field list' 1358SELECT ST_ISCLOSED(ST_POLYFROMTEXT()); 1359ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMTEXT' 1360SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('NULL')); 1361ERROR 22023: Invalid GIS data provided to function st_mlinefromtext. 1362SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING(())')); 1363ERROR 22023: Invalid GIS data provided to function st_mlinefromtext. 1364SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((1 1,2 2),()')); 1365ERROR 22023: Invalid GIS data provided to function st_mlinefromtext. 1366SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((1 1,2 2,3 3)')); 1367ERROR 22023: Invalid GIS data provided to function st_mlinefromtext. 1368SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1 1,2 3,3 3,4))')); 1369ERROR 22023: Invalid GIS data provided to function st_multilinestringfromtext. 1370SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1 1,2 2,3 3,4 a))')); 1371ERROR 22023: Invalid GIS data provided to function st_multilinestringfromtext. 1372SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING(('!' 1,2 2,3 3,4 4')); 1373ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 1,2 2,3 3,4 4'))' at line 1 1374#==================================================================================== 1375# ST_LENGTH(multilinestring) 1376#==================================================================================== 1377SELECT ST_LENGTH(); 1378ERROR 42000: Incorrect parameter count in the call to native function 'ST_LENGTH' 1379SELECT ST_LENGTH(NULL); 1380ST_LENGTH(NULL) 1381NULL 1382#==================================================================================== 1383# ST_NUMGEOMETRIES(geometrycollection) 1384#==================================================================================== 1385SELECT ST_NUMGEOMETRIES(); 1386ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMGEOMETRIES' 1387SELECT ST_NUMGEOMETRIES(NULL); 1388ST_NUMGEOMETRIES(NULL) 1389NULL 1390SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB()); 1391ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMCOLLFROMWKB' 1392SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(1,1), POINT(2,2))))), 1); 1393ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMGEOMETRIES' 1394SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(a,1), POINT(2,2)))))); 1395ERROR 42S22: Unknown column 'a' in 'field list' 1396SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,b), LINESTRING(POINT(a,1), POINT(2,2)))))); 1397ERROR 42S22: Unknown column 'b' in 'field list' 1398SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT()); 1399ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMCOLLFROMTEXT' 1400SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('NULL')); 1401ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1402SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(1)')); 1403ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1404SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0))')); 1405ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1406SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2)')); 1407ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1408SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2))')); 1409ERROR 22023: Invalid GIS data provided to function st_geometrycollectionfromtext. 1410SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 a))')); 1411ERROR 22023: Invalid GIS data provided to function st_geometrycollectionfromtext. 1412SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 '!'))')); 1413ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!'))'))' at line 1 1414#==================================================================================== 1415# ST_GEOMETRYN(geometrycollection, number) 1416#==================================================================================== 1417SELECT ST_GEOMETRYN(); 1418ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN' 1419SELECT ST_GEOMETRYN(NULL); 1420ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN' 1421SELECT ST_GEOMETRYN(NULL, 1); 1422ST_GEOMETRYN(NULL, 1) 1423NULL 1424SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMWKB()); 1425ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN' 1426SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(1,1), POINT(2,2)))))); 1427ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN' 1428SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(a,1), POINT(2,2))))), 1); 1429ERROR 42S22: Unknown column 'a' in 'field list' 1430SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,b), LINESTRING(POINT(a,1), POINT(2,2))))), 1); 1431ERROR 42S22: Unknown column 'b' in 'field list' 1432SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(1,1), POINT(2,2))))), A); 1433ERROR 42S22: Unknown column 'A' in 'field list' 1434SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT()); 1435ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN' 1436SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('NULL'), 1); 1437ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1438SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(1)'), 2); 1439ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1440SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0))'), 3); 1441ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1442SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2)'), 4); 1443ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1444SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2))'), 5); 1445ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1446SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 a))'), 6); 1447ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext. 1448SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 '!'))'), 7); 1449ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!'))'), 7)' at line 1 1450SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 0); 1451ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 0) 1452NULL 1453SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1); 1454ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1) 1455NULL 1456SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1024); 1457ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1024) 1458NULL 1459SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 10000); 1460ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 10000) 1461NULL 1462SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 123456789); 1463ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 123456789) 1464NULL 1465# Check procedure to work with Point and MultiPoint properties 1466CREATE PROCEDURE point_attri() 1467BEGIN 1468SELECT ST_X(ST_POINTFROMTEXT('POINT(0 0)')); 1469SELECT ST_X(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)')); 1470SELECT ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)')); 1471SELECT ST_Y(ST_POINTFROMTEXT('POINT(0 0)')); 1472SELECT ST_Y(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)')); 1473SELECT ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)')); 1474END | 1475# Call the proc 1476CALL point_attri; 1477ST_X(ST_POINTFROMTEXT('POINT(0 0)')) 14780 1479ST_X(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)')) 14801.1111 1481ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)')) 14821e308 1483ST_Y(ST_POINTFROMTEXT('POINT(0 0)')) 14840 1485ST_Y(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)')) 1486-1.1111 1487ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)')) 14881e308 1489# Dropping the created procedure 1490DROP PROCEDURE point_attri; 1491# Check procedure to work with Linestring and MultiLineString properties 1492CREATE PROCEDURE line_attri() 1493BEGIN 1494SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)')); 1495SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)')); 1496SELECT ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,10 0,0 0,-10 0,0 0,0 10,0 0,0 -10,0 0)')); 1497SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)'))); 1498SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,0 0)'))); 1499SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)'), 8)); 1500SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,1 1,2 2,0 0),(0 0,-1 -1,-2 -2,0 0))')); 1501SELECT ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,0 10),(0 0,-10 0),(0 0,0 -10))')); 1502END | 1503# Call the proc 1504CALL line_attri; 1505ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)')) 15061 1507ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)')) 15084 1509ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,10 0,0 0,-10 0,0 0,0 10,0 0,0 -10,0 0)')) 151080 1511ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)'))) 1512POINT(0 0) 1513ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,0 0)'))) 1514POINT(0 0) 1515ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)'), 8)) 1516POINT(7 7) 1517ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,1 1,2 2,0 0),(0 0,-1 -1,-2 -2,0 0))')) 15181 1519ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,0 10),(0 0,-10 0),(0 0,0 -10))')) 152040 1521# Dropping the created procedure 1522DROP PROCEDURE line_attri; 1523CREATE PROCEDURE poly_attri() 1524BEGIN 1525SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')); 1526SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')); 1527SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'))); 1528SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'))); 1529SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'), 1)); 1530SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2)); 1531END | 1532# Call the proc 1533CALL poly_attri; 1534ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')) 15350 1536ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')) 15372 1538ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'))) 1539LINESTRING(0 0,0 10,10 10,10 0,0 0) 1540ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'))) 1541LINESTRING(0 0,0 10,10 10,10 0,0 0) 1542ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'), 1)) 1543NULL 1544ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2)) 1545LINESTRING(6 6,6 8,8 8,8 6,6 6) 1546# Dropping the created procedure 1547DROP PROCEDURE poly_attri; 1548CREATE PROCEDURE geom_coll_attri() 1549BEGIN 1550SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1551 'POINT(0 0),' 1552 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1553 'POLYGON((0 0,0 5,5 5,5 0,0 0)))')); 1554SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1555 'POINT(0 0),' 1556 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1557 'GEOMETRYCOLLECTION(' 1558 'GEOMETRYCOLLECTION()),' 1559 'POLYGON((0 0,0 5,5 5,5 0,0 0)))')); 1560SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1561 'POINT(0 0),' 1562 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1563 'POLYGON((0 0,0 5,5 5,5 0,0 0)))'), 3)); 1564SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1565 'POINT(0 0),' 1566 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1567 'GEOMETRYCOLLECTION(' 1568 'GEOMETRYCOLLECTION()),' 1569 'POLYGON((0 0,0 5,5 5,5 0,0 0)))'), 3)); 1570END | 1571# Call the proc 1572CALL geom_coll_attri; 1573ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1574 'POINT(0 0),' 1575 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1576 15773 1578ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1579 'POINT(0 0),' 1580 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1581 15824 1583ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1584 'POINT(0 0),' 1585 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1586 1587POLYGON((0 0,0 5,5 5,5 0,0 0)) 1588ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' 1589 'POINT(0 0),' 1590 'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),' 1591 1592GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY) 1593# Dropping the created procedure 1594DROP PROCEDURE geom_coll_attri; 1595# Final cleanup 1596DROP TABLE gis_point; 1597DROP TABLE gis_linestring; 1598DROP TABLE gis_polygon; 1599DROP TABLE gis_multi_point; 1600DROP TABLE gis_multi_linestring; 1601DROP TABLE gis_multi_polygon; 1602DROP TABLE gis_geometrycollection; 1603# 1604# WL#8579 Spatial Reference Systems 1605# 1606# SRID 0 (should pass) 1607SELECT ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 0)); 1608ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 0)) 1609NULL 1610# Projected SRS (should pass) 1611SELECT ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 2000)); 1612ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 2000)) 1613NULL 1614# Geographic SRS (should pass) 1615SELECT ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 4326)); 1616ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 4326)) 1617NULL 1618# 1619# WL#8579 Spatial Reference Systems 1620# GIS functions that do not depend on any SRS 1621# 1622CREATE PROCEDURE geom_prop_func(IN srid INT) 1623BEGIN 1624SET @pt_geom = ST_GEOMFROMTEXT('POINT(10 20)', srid); 1625SET @ln_geom = ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10)', srid); 1626SET @py_geom = ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))', srid); 1627SET @gc_geom = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(' 1628 'POINT(0 0),' 1629 'LINESTRING(0 0,10 10),' 1630 'POLYGON((0 0,0 10,10 10,10 0, 0 0)),' 1631 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),' 1632 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' 1633 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))', srid); 1634# GIS geometry property functions that do not depend on any SRS 1635DO ST_SRID(@pt_geom); 1636DO ST_ISEMPTY(@pt_geom); 1637DO ST_DIMENSION(@pt_geom); 1638DO ST_GEOMETRYTYPE(@pt_geom); 1639DO ST_X(@pt_geom); 1640DO ST_Y(@pt_geom); 1641DO ST_ISCLOSED(@ln_geom); 1642DO ST_NUMPOINTS(@ln_geom); 1643DO ST_ENDPOINT(@ln_geom); 1644DO ST_POINTN(@ln_geom, 2); 1645DO ST_STARTPOINT(@ln_geom); 1646DO ST_NUMINTERIORRING(@py_geom); 1647DO ST_NUMINTERIORRINGS(@py_geom); 1648DO ST_EXTERIORRING(@py_geom); 1649DO ST_INTERIORRINGN(@py_geom, 1); 1650DO ST_NUMGEOMETRIES(@gc_geom); 1651DO ST_GEOMETRYN(@gc_geom, 1); 1652END | 1653# SRID 0 (should pass) 1654CALL geom_prop_func(0); 1655# Projected SRS (should pass) 1656CALL geom_prop_func(2000); 1657# Geographic SRS (should fail) 1658CALL geom_prop_func(4326); 1659ERROR 22S00: st_isclosed(LINESTRING) has not been implemented for geographic spatial reference systems. 1660DROP PROCEDURE geom_prop_func; 1661# 1662# WL#11096 Don't do Cartesian computations on geographic geometries 1663# 1664# Assume SRID 10 is not defined. 1665DO ST_ISCLOSED(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000'); 1666ERROR SR001: There's no spatial reference system with SRID 10. 1667DO ST_LENGTH(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000'); 1668ERROR SR001: There's no spatial reference system with SRID 10. 1669DO ST_SRID(ST_GEOMFROMTEXT('LINESTRING(0 0, 10 10)'), 10); 1670ERROR SR001: There's no spatial reference system with SRID 10. 1671DO ST_DIMENSION(x'0A000000010100000000000000000000000000000000000000'); 1672ERROR SR001: There's no spatial reference system with SRID 10. 1673DO ST_ENDPOINT(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000'); 1674ERROR SR001: There's no spatial reference system with SRID 10. 1675DO ST_EXTERIORRING(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); 1676ERROR SR001: There's no spatial reference system with SRID 10. 1677DO ST_GEOMETRYN(x'0A000000010700000001000000010100000000000000000000000000000000000000', 1); 1678ERROR SR001: There's no spatial reference system with SRID 10. 1679DO ST_INTERIORRINGN(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 1); 1680ERROR SR001: There's no spatial reference system with SRID 10. 1681DO ST_ISEMPTY(x'0A000000010100000000000000000000000000000000000000'); 1682ERROR SR001: There's no spatial reference system with SRID 10. 1683DO ST_NUMGEOMETRIES(x'0A000000010700000001000000010100000000000000000000000000000000000000'); 1684ERROR SR001: There's no spatial reference system with SRID 10. 1685DO ST_NUMINTERIORRING(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); 1686ERROR SR001: There's no spatial reference system with SRID 10. 1687DO ST_NUMINTERIORRINGS(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); 1688ERROR SR001: There's no spatial reference system with SRID 10. 1689DO ST_NUMPOINTS(x'0A000000010400000001000000010100000000000000000000000000000000000000'); 1690ERROR SR001: There's no spatial reference system with SRID 10. 1691DO ST_NUMPOINTS(x'0A000000010400000001000000010100000000000000000000000000000000000000'); 1692ERROR SR001: There's no spatial reference system with SRID 10. 1693DO ST_POINTN(x'0A000000010400000001000000010100000000000000000000000000000000000000', 1); 1694ERROR SR001: There's no spatial reference system with SRID 10. 1695DO ST_STARTPOINT(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000'); 1696ERROR SR001: There's no spatial reference system with SRID 10. 1697DO ST_X(x'0A000000010100000000000000000000000000000000000000'); 1698ERROR SR001: There's no spatial reference system with SRID 10. 1699DO ST_Y(x'0A000000010100000000000000000000000000000000000000'); 1700ERROR SR001: There's no spatial reference system with SRID 10. 1701SET @LINE = ST_GEOMFROMTEXT( 'LINESTRING(0 0 , 1 1 )', 4326); 1702SET @MLINE = ST_GEOMFROMTEXT( 'MULTILINESTRING((0 0 , 1 1 ))', 4326); 1703SELECT ST_LENGTH( @LINE, 'METRE'); 1704ST_LENGTH( @LINE, 'METRE') 1705156897.79947 1706SELECT ST_LENGTH( @MLINE, 'METRE'); 1707ST_LENGTH( @MLINE, 'METRE') 1708156897.79947 1709SELECT ST_LENGTH( @LINE, 'METER'); 1710ERROR SU001: There's no unit of measure named 'METER'. 1711SELECT ST_LENGTH( @LINE, NULL); 1712ST_LENGTH( @LINE, NULL) 1713NULL 1714SELECT ST_LENGTH( NULL, 'FOOT'); 1715ST_LENGTH( NULL, 'FOOT') 1716NULL 1717SET @LINE = ST_GEOMFROMTEXT( 'LINESTRING(0 0 , 1 1 )', 32167); 1718SELECT ST_LENGTH( @LINE); 1719ST_LENGTH( @LINE) 17201.4142135623730951 1721SELECT ST_LENGTH( @LINE, 'METRE'); 1722ST_LENGTH( @LINE, 'METRE') 17230.43105 1724