# 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);