324 lines
14 KiB
Plaintext
324 lines
14 KiB
Plaintext
###############################################################################
|
|
# #
|
|
# This test is aimed to focus on the properties and attributes of the #
|
|
# Mutator function ST_SWAPXY. #
|
|
# #
|
|
# #
|
|
# Creation Date: 2016-08-16 #
|
|
# Author : Jens Even Berg Blomsoy #
|
|
# #
|
|
###############################################################################
|
|
|
|
|
|
###############################################################################
|
|
# Creating the spatial objects #
|
|
###############################################################################
|
|
|
|
--echo # Creating the spatial objects
|
|
|
|
CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT);
|
|
CREATE TABLE gis_linestring (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING);
|
|
CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON);
|
|
CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT);
|
|
CREATE TABLE gis_multi_linestring (fid INTEGER NOT NULL PRIMARY KEY,
|
|
g MULTILINESTRING);
|
|
CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY,
|
|
g MULTIPOLYGON);
|
|
CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY,
|
|
g GEOMETRYCOLLECTION);
|
|
|
|
|
|
###############################################################################
|
|
# Inserting POINT Geometry values #
|
|
###############################################################################
|
|
|
|
--echo # Inserting POINT Geometry Values
|
|
|
|
INSERT INTO gis_point VALUES
|
|
(101, POINT(1.1111,-2.2222)),
|
|
(102, POINT(10.0000,20.0000));
|
|
|
|
INSERT INTO gis_point VALUES
|
|
(103, POINT(1e308, 1e202));
|
|
|
|
--echo # Displaying the inserted POINT Geometry Data
|
|
SELECT fid, ST_ASTEXT(g) FROM gis_point;
|
|
|
|
###############################################################################
|
|
# Inserting LINESTRING Geometry values #
|
|
###############################################################################
|
|
|
|
--echo # Inserting LINESTRING Geometry Values
|
|
|
|
INSERT INTO gis_linestring VALUES
|
|
(201, ST_LINEFROMTEXT('LINESTRING(0 2,2 4,4 8)'));
|
|
|
|
INSERT INTO gis_linestring VALUES
|
|
(202, ST_LINESTRINGFROMTEXT('LINESTRING(0 12,12 24,24 48)'));
|
|
|
|
INSERT INTO gis_linestring VALUES
|
|
(203, LINESTRING(POINT(0,0), POINT(-5,7),
|
|
POINT(-10,70)));
|
|
|
|
--echo # Displaying the inserted LINESTRING Geometry Data
|
|
SELECT fid, ST_ASTEXT(g) FROM gis_linestring;
|
|
|
|
###############################################################################
|
|
# Inserting POLYGON Geometry values #
|
|
###############################################################################
|
|
|
|
--echo # Inserting POLYGON Geometry Values
|
|
|
|
INSERT INTO gis_polygon VALUES
|
|
(301, ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5, 0 0))'));
|
|
|
|
INSERT INTO gis_polygon VALUES
|
|
(302, ST_POLYGONFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0),
|
|
(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'));
|
|
|
|
INSERT INTO gis_polygon VALUES
|
|
(303, POLYGON(LINESTRING(POINT(0,0), POINT(10,0),
|
|
POINT(10,10), POINT(0,10), POINT(0,0)), LINESTRING(POINT(4,4), POINT(4,6),
|
|
POINT(6,6), POINT(6,4), POINT(4,4))));
|
|
|
|
--echo # Displaying the inserted POLYGON Geometry Data
|
|
SELECT fid, ST_ASTEXT(g) FROM gis_polygon;
|
|
|
|
###############################################################################
|
|
# Inserting MULTIPOINT Geometry values #
|
|
###############################################################################
|
|
|
|
--echo # Inserting MULTIPOINT Geometry Values
|
|
|
|
INSERT INTO gis_multi_point VALUES
|
|
(401, ST_MPOINTFROMTEXT('MULTIPOINT(0 0,5 5,10 10)'));
|
|
|
|
INSERT INTO gis_multi_point VALUES
|
|
(402, ST_MULTIPOINTFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308
|
|
1e308,-1e308 -1e308)'));
|
|
|
|
INSERT INTO gis_multi_point VALUES
|
|
(403, ST_MPOINTFROMTEXT('MULTIPOINT(1e308
|
|
1e308, 1e308 -1e308, -1e308 1e308, -1e308 -1e308, 1e308 1e308)'));
|
|
|
|
--echo # Displaying the inserted MULTIPOINT Geometry Data
|
|
SELECT fid, ST_ASTEXT(g) FROM gis_multi_point;
|
|
|
|
###############################################################################
|
|
# Inserting MULTILINESTRING Geometry values #
|
|
###############################################################################
|
|
|
|
--echo # Inserting MULTILINESTRING Geometry Values
|
|
|
|
INSERT INTO gis_multi_linestring VALUES
|
|
(501, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))'));
|
|
|
|
INSERT INTO gis_multi_linestring VALUES
|
|
(502, MULTILINESTRING(LINESTRING(POINT(0,0),
|
|
POINT(12,12), POINT(24,24)),
|
|
LINESTRING(POINT(36,36), POINT(48,48), POINT(50,50))));
|
|
|
|
INSERT INTO gis_multi_linestring VALUES
|
|
(503, ST_MULTILINESTRINGFROMTEXT
|
|
('MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0))'));
|
|
|
|
--echo # Displaying the inserted MULTILINESTRING Geometry Data
|
|
SELECT fid, ST_ASTEXT(g) FROM gis_multi_linestring;
|
|
|
|
###############################################################################
|
|
# Inserting MULTIPOLYGON Geometry values #
|
|
###############################################################################
|
|
|
|
--echo # Inserting MULTIPOLGYON Geometry Values
|
|
|
|
INSERT INTO gis_multi_polygon VALUES
|
|
(601, MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
|
|
POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))))),
|
|
(602, MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
|
|
POINT(10, 0), POINT(10,10), POINT(10, 0), POINT(0,0)),
|
|
LINESTRING(POINT(4,4),
|
|
POINT(4,6), POINT(6,6),
|
|
POINT(6,4), POINT(4,4))))),
|
|
(603, MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
|
|
POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))),
|
|
POLYGON(LINESTRING(POINT(0,0),
|
|
POINT(-5, 0), POINT(-5,-5), POINT(0 ,-5),
|
|
POINT(0,0)))));
|
|
|
|
--echo # Displaying the inserted MULTIPOLYGON Geometry Data
|
|
SELECT fid, ST_ASTEXT(g) FROM gis_multi_polygon;
|
|
|
|
###############################################################################
|
|
# Inserting GEOMETRYCOLLECTION Geometry values #
|
|
###############################################################################
|
|
|
|
INSERT INTO gis_geometrycollection VALUES
|
|
(701, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')),
|
|
(702, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),
|
|
LINESTRING(0 0,10 10))')),
|
|
(703, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5),
|
|
POLYGON((0 0,10 0,10 10,0 10,0 0)))'));
|
|
|
|
--echo # Displaying the inserted GEOMETRYCOLLECTION Geometry Data
|
|
SELECT fid, ST_ASTEXT(g) FROM gis_geometrycollection;
|
|
|
|
###############################################################################
|
|
# Geometry call to ST_SWAPXY() #
|
|
###############################################################################
|
|
|
|
--echo #=======================================================================
|
|
--echo # ST_SWAPXY(point)
|
|
--echo #=======================================================================
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_point WHERE fid = 101;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_point WHERE fid = 102;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_point WHERE fid = 103;
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_POINTFROMTEXT(
|
|
'POINT(1.1111 -2.2222)')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_POINTFROMTEXT(
|
|
'POINT(10.0000 20.0000)')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_POINTFROMTEXT(
|
|
'POINT(1e308 1e202)')));
|
|
|
|
|
|
--echo #=======================================================================
|
|
--echo # ST_SWAPXY(linestring)
|
|
--echo #=======================================================================
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_linestring WHERE fid = 201;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_linestring WHERE fid = 202;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_linestring WHERE fid = 203;
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_LINEFROMTEXT('LINESTRING(0 2,2 4,4 8)')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_LINESTRINGFROMTEXT('LINESTRING(0 12,12 24,24 48)')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(LINESTRING(POINT(0,2), POINT(-5,7),
|
|
POINT(-10,70))));
|
|
|
|
|
|
--echo #=======================================================================
|
|
--echo # ST_SWAPXY(polygon)
|
|
--echo #=======================================================================
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_polygon WHERE fid = 301;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_polygon WHERE fid = 302;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_polygon WHERE fid = 303;
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5, 0 0))')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_POLYGONFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0),
|
|
(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(POLYGON(LINESTRING(POINT(0,0), POINT(10,0),
|
|
POINT(10,10), POINT(0,10), POINT(0,0)), LINESTRING(POINT(4,4), POINT(4,6),
|
|
POINT(6,6), POINT(6,4), POINT(4,4)))));
|
|
|
|
--echo #=======================================================================
|
|
--echo # ST_SWAPXY(multipoint)
|
|
--echo #=======================================================================
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_point WHERE fid = 401;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_point WHERE fid = 402;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_point WHERE fid = 403;
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_MPOINTFROMTEXT('MULTIPOINT(0 5,5 10,10 20)')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_MPOINTFROMTEXT('MULTIPOINT(
|
|
1e308 1e208,1e308 -1e208,-1e308 1e208,-1e308 -1e208)')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_MPOINTFROMTEXT(
|
|
'MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,
|
|
-1e308 -1e308,1e308 1e308)')));
|
|
|
|
|
|
--echo #=======================================================================
|
|
--echo # ST_SWAPXY(multilinestring)
|
|
--echo #=======================================================================
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_linestring WHERE fid = 501;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_linestring WHERE fid = 502;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_linestring WHERE fid = 503;
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),
|
|
(6 6,8 8,10 10))')));
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(MULTILINESTRING(
|
|
LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)), LINESTRING(POINT(36,36),
|
|
POINT(48,48), POINT(50,50)))));
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(
|
|
ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,0 100),(0 0,100 0),
|
|
(0 0,0 -100),(0 0,-100 0))')));
|
|
|
|
|
|
--echo #=======================================================================
|
|
--echo # ST_SWAPXY(multipolygon)
|
|
--echo #=======================================================================
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_polygon WHERE fid = 601;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_polygon WHERE fid = 602;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_polygon WHERE fid = 603;
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
|
|
POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))))));
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
|
|
POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), LINESTRING(POINT(4,4),
|
|
POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))));
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
|
|
POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))),
|
|
POLYGON(LINESTRING(POINT(0,0), POINT(-5, 0), POINT(-5,-5), POINT(0, -5),
|
|
POINT(0,0))))));
|
|
|
|
|
|
--echo #=======================================================================
|
|
--echo # ST_SWAPXY(geometrycollection)
|
|
--echo #=======================================================================
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_geometrycollection WHERE fid = 701;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_geometrycollection WHERE fid = 702;
|
|
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_geometrycollection WHERE fid = 703;
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),
|
|
LINESTRING(0 0,10 10))')));
|
|
SELECT ST_ASTEXT(ST_SWAPXY(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5),
|
|
POLYGON((0 0,10 0,10 10,0 10,0 0)))')));
|
|
|
|
########################################
|
|
# Null value testing #
|
|
########################################
|
|
|
|
SELECT ST_ASTEXT(ST_SWAPXY(NULL));
|
|
|
|
###############################################################################
|
|
# Invalid function calls #
|
|
###############################################################################
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT ST_ASTEXT(ST_SWAPXY());
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_SWAPXY('foobar');
|
|
|
|
# Point without coordinates
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_SWAPXY(x'0101000000');
|
|
|
|
# Linestring with zero points
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_SWAPXY(x'010200000000000000');
|
|
|
|
--echo # Final cleanup
|
|
DROP TABLE gis_point;
|
|
DROP TABLE gis_linestring;
|
|
DROP TABLE gis_polygon;
|
|
DROP TABLE gis_multi_point;
|
|
DROP TABLE gis_multi_linestring;
|
|
DROP TABLE gis_multi_polygon;
|
|
DROP TABLE gis_geometrycollection;
|
|
|
|
--echo #
|
|
--echo # WL#11096 Don't do Cartesian computations on geographic geometries
|
|
--echo #
|
|
|
|
--error ER_SRS_NOT_FOUND
|
|
DO ST_SWAPXY(x'0A000000010100000000000000000000000000000000000000');
|