polardbxengine/mysql-test/suite/gis/t/st_transform.test

392 lines
18 KiB
Plaintext

# This test test the ST_Transform function
--echo #
--echo # NULL values.
--echo #
--echo # At least one NULL parameter. Should return NULL.
SELECT ST_TRANSFORM(NULL, NULL);
SELECT ST_TRANSFORM(NULL, 4326);
SELECT ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), NULL);
--echo #
--echo # Invalid parameters.
--echo #
--echo # Invalid geometry. Should raise error.
--error ER_GIS_INVALID_DATA
DO ST_TRANSFORM(x'00000000DEADBEEF', 4326);
--echo # Non-existing SRID. Should raise error.
# Assume SRID 1000000000 is undefined.
--error ER_SRS_NOT_FOUND
DO ST_TRANSFORM(
x'94007735010100000000000000000000000000000000000000',
4326
);
--error ER_SRS_NOT_FOUND
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000000000);
--echo #
--echo # Transformation to/from SRID 0.
--echo #
--echo # Transformation from SRID 0 to SRID 0 is a no-op. Should return true.
SELECT
ST_EQUALS(
ST_GEOMFROMTEXT('POINT(0 0)'),
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)'), 0)
) AS is_noop;
--echo # Transformation between SRID 0 and geographic SRS. Should raise error.
# Ellipsoidal:
--error ER_TRANSFORM_SOURCE_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)'), 4326);
--error ER_TRANSFORM_TARGET_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 0);
# Spherical:
--error ER_TRANSFORM_SOURCE_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)'), 4047);
--error ER_TRANSFORM_TARGET_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4047), 0);
--echo # Transformation between SRID 0 and projected SRS. Should raise error.
--error ER_TRANSFORM_SOURCE_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)'), 3857);
--error ER_TRANSFORM_TARGET_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 3857), 0);
--echo #
--echo # Transformation between geographic SRSs.
--echo #
--echo # Transformation of every geometry type. Should succeed.
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 3819);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)', 4326), 3819);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1, 1 1, 0 0))', 4326), 3819);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))', 4326), 3819);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('MULTIPOINT((0 0))', 4326), 3819);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 1))', 4326), 3819);
DO ST_TRANSFORM(
ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 0 1, 1 1, 0 0)))', 4326),
3819
);
--echo # Beginning of tests to verify that WGS 84 is recognized.
--echo # WGS 84 with no authority codes. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with no authority codes exept EPSG 4326 for the entire SRS.
--echo # Should succeed.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect authority code. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","0"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with authority code for the spheroid. Should succeed.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect authority code for the spheroid. Should raise
--echo # error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","0"]]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect semi-major axis. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",1378137,298.257223563,AUTHORITY["EPSG","7030"]]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect inverse flattening. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,198.257223563,AUTHORITY["EPSG","7030"]]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with authority code for the datum. Should succeed.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect authority code for the datum. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563],AUTHORITY["EPSG","0"]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with authority code for the prime meridian. Should succeed.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect authority code for the prime meridian. Should
--echo # raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","0"]],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect prime meridian. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",1,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with authority code for the unit. Should succeed.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect authority code for the unit. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","0"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect unit. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.01,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # WGS 84 with incorrect axes. Should raise error.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lon",EAST],AXIS["Lat",NORTH],AUTHORITY["EPSG","4326"]]';
--error ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
--error ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # End of tests to verify that WGS 84 is recognized.
--echo # Geographic SRS with TOWGS84 clause. Should succeed.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # Spherical SRS with TOWGS84 clause. Should succeed.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # Prime meridian 1 degree East of Greenwich.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["foo",1],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
--replace_numeric_round 15
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
) AS lon_should_be_plus_one;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
) AS lon_should_be_minus_one;
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # Prime meridian 1 degree West of Greenwich.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["foo",-1],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
--replace_numeric_round 15
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
) AS lon_should_be_minus_one;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
) AS lon_should_be_plus_one;
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # Prime meridian 180 degrees East of Greenwich.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["foo",180],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
) AS lon_should_be_180;
# Because of floating point computations, -180 is not converted to 180, even
# though the range is (-180, 180].
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
) AS lon_should_be_minus_180;
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # Prime meridian 180 degrees West of Greenwich.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["foo",-180],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
# Because of floating point computations, -180 is not converted to 180, even
# though the range is (-180, 180].
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
) AS lon_should_be_minus_180;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
) AS lon_should_be_180;
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # Transformation between degrees and gradians.
CREATE SPATIAL REFERENCE SYSTEM 1000004326
NAME 'foo'
DEFINITION 'GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["grad",0.01570796326794895],AXIS["Lat",NORTH],AXIS["Lon",EAST]]';
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
) AS should_be_0_0;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
) AS should_be_0_0;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(100 100)', 1000004326), 4326)
) AS should_be_90_90;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(90 90)', 4326), 1000004326)
) AS should_be_100_100;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(-100 -100)', 1000004326), 4326)
) AS should_be_minus_90_minus_90;
SELECT
ST_ASTEXT(
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(-90 -90)', 4326), 1000004326)
) AS should_be_minus_100_minus_100;
DROP SPATIAL REFERENCE SYSTEM 1000004326;
--echo # Transformations between European Datum 1950 (ED50) and WGS 84.
--echo # Positions in Western Europe will be further North and East in ED50 than
--echo # in WGS 84.
--echo # Trondheim.
--replace_numeric_round 6
SELECT
ST_ASTEXT(
ST_TRANSFORM(
ST_GEOMFROMTEXT('POINT(63.4269121428687 10.3969184885902)', 4326),
4230
)
) AS ED50;
--replace_numeric_round 6
SELECT
ST_ASTEXT(
ST_TRANSFORM(
ST_GEOMFROMTEXT('POINT(63.42724046084803 10.398501870897267)', 4230),
4326
)
) AS WGS84;
--echo # Telegrafenberg, Potsdam (origin of ED50).
--replace_numeric_round 6
SELECT
ST_ASTEXT(
ST_TRANSFORM(
ST_GEOMFROMTEXT('POINT(52.381389 13.064444)', 4326),
4230
)
) AS ED50;
--replace_numeric_round 6
SELECT
ST_ASTEXT(
ST_TRANSFORM(
ST_GEOMFROMTEXT('POINT(52.38208611407426 13.065520672345304)', 4230),
4326
)
) AS WGS84;
--echo #
--echo # Transformation to/from projected SRSs.
--echo #
# No projections are supported yet.
--echo # Verify that it isn't possible to transform to/from a projection.
--echo # Transformation between SRID 0 and geographic SRSs should fail.
--error ER_TRANSFORM_TARGET_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 3857);
--error ER_TRANSFORM_SOURCE_SRS_NOT_SUPPORTED
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 3857), 4326);