392 lines
18 KiB
Plaintext
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);
|