379 lines
19 KiB
Plaintext
379 lines
19 KiB
Plaintext
#
|
|
# NULL values.
|
|
#
|
|
# At least one NULL parameter. Should return NULL.
|
|
SELECT ST_TRANSFORM(NULL, NULL);
|
|
ST_TRANSFORM(NULL, NULL)
|
|
NULL
|
|
SELECT ST_TRANSFORM(NULL, 4326);
|
|
ST_TRANSFORM(NULL, 4326)
|
|
NULL
|
|
SELECT ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), NULL);
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), NULL)
|
|
NULL
|
|
#
|
|
# Invalid parameters.
|
|
#
|
|
# Invalid geometry. Should raise error.
|
|
DO ST_TRANSFORM(x'00000000DEADBEEF', 4326);
|
|
ERROR 22023: Invalid GIS data provided to function st_transform.
|
|
# Non-existing SRID. Should raise error.
|
|
DO ST_TRANSFORM(
|
|
x'94007735010100000000000000000000000000000000000000',
|
|
4326
|
|
);
|
|
ERROR SR001: There's no spatial reference system with SRID 896991380.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000000000);
|
|
ERROR SR001: There's no spatial reference system with SRID 1000000000.
|
|
#
|
|
# Transformation to/from SRID 0.
|
|
#
|
|
# 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;
|
|
is_noop
|
|
1
|
|
# Transformation between SRID 0 and geographic SRS. Should raise error.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)'), 4326);
|
|
ERROR 22S00: Transformation from SRID 0 is not supported.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 0);
|
|
ERROR 22S00: Transformation to SRID 0 is not supported.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)'), 4047);
|
|
ERROR 22S00: Transformation from SRID 0 is not supported.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4047), 0);
|
|
ERROR 22S00: Transformation to SRID 0 is not supported.
|
|
# Transformation between SRID 0 and projected SRS. Should raise error.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)'), 3857);
|
|
ERROR 22S00: Transformation from SRID 0 is not supported.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 3857), 0);
|
|
ERROR 22S00: Transformation to SRID 0 is not supported.
|
|
#
|
|
# Transformation between geographic SRSs.
|
|
#
|
|
# 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
|
|
);
|
|
# Beginning of tests to verify that WGS 84 is recognized.
|
|
# 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]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# WGS 84 with no authority codes exept EPSG 4326 for the entire SRS.
|
|
# 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;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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;
|
|
# WGS 84 with incorrect authority code for the spheroid. 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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;
|
|
# WGS 84 with incorrect authority code for the 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",0,AUTHORITY["EPSG","0"]],UNIT["degree",0.017453292519943278],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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"]]';
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326);
|
|
ERROR 22S00: Transformation from SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326);
|
|
ERROR 22S00: Transformation to SRID 1000004326 is not supported. The spatial reference system has no TOWGS84 clause.
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# End of tests to verify that WGS 84 is recognized.
|
|
# 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;
|
|
# 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;
|
|
# 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]]';
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
|
|
) AS lon_should_be_plus_one;
|
|
lon_should_be_plus_one
|
|
POINT(0 1)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
|
|
) AS lon_should_be_minus_one;
|
|
lon_should_be_minus_one
|
|
POINT(0 -1)
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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]]';
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
|
|
) AS lon_should_be_minus_one;
|
|
lon_should_be_minus_one
|
|
POINT(0 -1)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
|
|
) AS lon_should_be_plus_one;
|
|
lon_should_be_plus_one
|
|
POINT(0 1)
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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;
|
|
lon_should_be_180
|
|
POINT(0 180)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
|
|
) AS lon_should_be_minus_180;
|
|
lon_should_be_minus_180
|
|
POINT(0 -180)
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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]]';
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 1000004326), 4326)
|
|
) AS lon_should_be_minus_180;
|
|
lon_should_be_minus_180
|
|
POINT(0 -180)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
|
|
) AS lon_should_be_180;
|
|
lon_should_be_180
|
|
POINT(0 180)
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# 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;
|
|
should_be_0_0
|
|
POINT(0 0)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1000004326)
|
|
) AS should_be_0_0;
|
|
should_be_0_0
|
|
POINT(0 0)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(100 100)', 1000004326), 4326)
|
|
) AS should_be_90_90;
|
|
should_be_90_90
|
|
POINT(90 90)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(90 90)', 4326), 1000004326)
|
|
) AS should_be_100_100;
|
|
should_be_100_100
|
|
POINT(100 100)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(-100 -100)', 1000004326), 4326)
|
|
) AS should_be_minus_90_minus_90;
|
|
should_be_minus_90_minus_90
|
|
POINT(-90 -90)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(-90 -90)', 4326), 1000004326)
|
|
) AS should_be_minus_100_minus_100;
|
|
should_be_minus_100_minus_100
|
|
POINT(-100 -100)
|
|
DROP SPATIAL REFERENCE SYSTEM 1000004326;
|
|
# Transformations between European Datum 1950 (ED50) and WGS 84.
|
|
# Positions in Western Europe will be further North and East in ED50 than
|
|
# in WGS 84.
|
|
# Trondheim.
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(
|
|
ST_GEOMFROMTEXT('POINT(63.426912 10.396918)', 4326),
|
|
4230
|
|
)
|
|
) AS ED50;
|
|
ED50
|
|
POINT(63.42724 10.398502)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(
|
|
ST_GEOMFROMTEXT('POINT(63.42724 10.398502)', 4230),
|
|
4326
|
|
)
|
|
) AS WGS84;
|
|
WGS84
|
|
POINT(63.426912 10.396918)
|
|
# Telegrafenberg, Potsdam (origin of ED50).
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(
|
|
ST_GEOMFROMTEXT('POINT(52.381389 13.064444)', 4326),
|
|
4230
|
|
)
|
|
) AS ED50;
|
|
ED50
|
|
POINT(52.382086 13.065521)
|
|
SELECT
|
|
ST_ASTEXT(
|
|
ST_TRANSFORM(
|
|
ST_GEOMFROMTEXT('POINT(52.382086 13.065521)', 4230),
|
|
4326
|
|
)
|
|
) AS WGS84;
|
|
WGS84
|
|
POINT(52.381389 13.064444)
|
|
#
|
|
# Transformation to/from projected SRSs.
|
|
#
|
|
# Verify that it isn't possible to transform to/from a projection.
|
|
# Transformation between SRID 0 and geographic SRSs should fail.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 3857);
|
|
ERROR 22S00: Transformation to SRID 3857 is not supported.
|
|
DO ST_TRANSFORM(ST_GEOMFROMTEXT('POINT(0 0)', 3857), 4326);
|
|
ERROR 22S00: Transformation from SRID 3857 is not supported.
|