# This test tests the ST_LATITUDE function. --echo # NULL as one of the parameters must result in NULL return value. SELECT ST_LATITUDE(NULL); SELECT ST_LATITUDE(NULL, NULL); SELECT ST_LATITUDE(NULL, 1); SELECT ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 4326), NULL); --echo # Invalid data is not allowed. --error ER_GIS_INVALID_DATA DO ST_LATITUDE(x'000000000123456789abcdef'); --error ER_GIS_INVALID_DATA DO ST_LATITUDE(x'000000000123456789abcdef', 1); --echo # New value must be within the allowed range. --error ER_LATITUDE_OUT_OF_RANGE DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 4326), -90.000000001); --error ER_LATITUDE_OUT_OF_RANGE DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 90.000000001); --echo # First parameter must be a point. --echo # Cartesian SRID 0 --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)', 0)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1, 1 1, 0 0))', 0)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOINT((0 0))', 0)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOINT((0 0), (1 1))', 0)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 1))', 0)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 0 1, 1 1, 0 0)))', 0)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))', 0)); --echo # Projected --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)', 3857)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1, 1 1, 0 0))', 3857)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOINT((0 0))', 3857)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOINT((0 0), (1 1))', 3857)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 1))', 3857)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 0 1, 1 1, 0 0)))', 3857)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))', 3857)); --echo # Geographic --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)', 4326)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1, 1 1, 0 0))', 4326)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOINT((0 0))', 4326)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOINT((0 0), (1 1))', 4326)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 1))', 4326)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 0 1, 1 1, 0 0)))', 4326)); --error ER_UNEXPECTED_GEOMETRY_TYPE DO ST_LATITUDE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))', 4326)); --echo # Point must be geographic. --error ER_SRS_NOT_GEOGRAPHIC DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 0)); --error ER_SRS_NOT_GEOGRAPHIC DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 3857)); DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 4326)); --error ER_SRS_NOT_GEOGRAPHIC DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 0), 1); --error ER_SRS_NOT_GEOGRAPHIC DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 3857), 1); DO ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1); --echo # Get or set the latitude of a point in a lat-long SRS. SELECT ST_LATITUDE(ST_GEOMFROMTEXT('POINT(1 0)', 4326)); SELECT HEX(ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 4326), 1)); --echo # Get or set the latitude of a point in a long-lat SRS. SELECT ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 1)', 7035)); SELECT HEX(ST_LATITUDE(ST_GEOMFROMTEXT('POINT(0 0)', 7035), 1)); --echo # Get or set the latitude of a point in a lat-long SRS with a meridian --echo # that doesn't go through Greenwich. SELECT ST_LATITUDE(ST_GEOMFROMTEXT('POINT(1 0)', 4801)); SELECT HEX(ST_LATITUDE(ST_GEOMFROMTEXT('POINT(1 0)', 4801), 1));