From: Bborie Park Date: Tue, 22 May 2012 17:06:30 +0000 (+0000) Subject: Expansion of regression tests and fix error messages X-Git-Tag: 2.1.0beta2~988 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2ea9d7d34f61ea9e925eee8325162512b4a7c36a;p=postgis Expansion of regression tests and fix error messages git-svn-id: http://svn.osgeo.org/postgis/trunk@9795 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/raster/rt_pg/rt_pg.c b/raster/rt_pg/rt_pg.c index 390a335f1..ef0b826c0 100644 --- a/raster/rt_pg/rt_pg.c +++ b/raster/rt_pg/rt_pg.c @@ -8862,8 +8862,7 @@ Datum RASTER_rasterToWorldCoord(PG_FUNCTION_ARGS) if (PG_ARGISNULL(i)) { /* if skewed on same axis, parameter is required */ if (skewed[i - 1]) { - /* in 2.0, error is ERROR. for 2.1 must change to NOTICE */ - elog(ERROR, "RASTER_rasterToWorldCoord: Pixel row and column required for computing longitude and latitude of a rotated raster"); + elog(NOTICE, "Pixel row and column required for computing longitude and latitude of a rotated raster"); rt_raster_destroy(raster); PG_RETURN_NULL(); } @@ -8956,8 +8955,7 @@ Datum RASTER_worldToRasterCoord(PG_FUNCTION_ARGS) if (PG_ARGISNULL(i)) { /* if skewed, parameter is required */ if (skewed) { - /* in 2.0, error is ERROR. for 2.1 must change to NOTICE */ - elog(ERROR, "RASTER_worldToRasterCoord: Latitude and longitude required for computing pixel row and column of a rotated raster"); + elog(NOTICE, "Latitude and longitude required for computing pixel row and column of a rotated raster"); rt_raster_destroy(raster); PG_RETURN_NULL(); } diff --git a/raster/rt_pg/rtpostgis.sql.in.c b/raster/rt_pg/rtpostgis.sql.in.c index bd388ca7a..9586ed6ae 100644 --- a/raster/rt_pg/rtpostgis.sql.in.c +++ b/raster/rt_pg/rtpostgis.sql.in.c @@ -2521,6 +2521,31 @@ CREATE OR REPLACE FUNCTION st_world2rastercoord( AS $$ SELECT columnx, rowy FROM _st_world2rastercoord($1, $2, $3) $$ LANGUAGE 'sql' IMMUTABLE STRICT; +--------------------------------------------------------------------------------- +-- ST_World2RasterCoordX(rast raster, pt geometry) +-- Returns the pixel column and row covering the provided point geometry. +-- This function works even if the point is outside the raster extent. +--------------------------------------------------------------------------------- +CREATE OR REPLACE FUNCTION st_world2rastercoord( + rast raster, pt geometry, + OUT columnx integer, + OUT rowy integer +) + AS + $$ + DECLARE + rx integer; + ry integer; + BEGIN + IF (st_geometrytype(pt) != 'ST_Point') THEN + RAISE EXCEPTION 'Attempting to compute raster coordinate with a non-point geometry'; + END IF; + SELECT rc.columnx AS x, rc.rowy AS y INTO columnx, rowy FROM _st_world2rastercoord($1, st_x(pt), st_y(pt)) AS rc; + RETURN; + END; + $$ + LANGUAGE 'plpgsql' IMMUTABLE STRICT; + --------------------------------------------------------------------------------- -- ST_World2RasterCoordX(rast raster, xw float8, yw float8) -- Returns the column number of the pixel covering the provided X and Y world diff --git a/raster/test/regress/rt_raster2worldcoord.sql b/raster/test/regress/rt_raster2worldcoord.sql index d79ca0c60..590614295 100644 --- a/raster/test/regress/rt_raster2worldcoord.sql +++ b/raster/test/regress/rt_raster2worldcoord.sql @@ -66,4 +66,88 @@ SELECT (ST_Raster2WorldCoord(rast, -1, 0)).* FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, 1, 1) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, 1, 2) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, 2, 2) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, 0, 0) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, -1, 0) +FROM raster_raster2world; + +SELECT + rid, + ST_Raster2WorldCoordX(rast, 1) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, 1) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, 2) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, 0) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordX(rast, -1) +FROM raster_raster2world; + +SELECT + rid, + ST_Raster2WorldCoordY(rast, 1, 1) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, 1, 2) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, 2, 2) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, 0, 0) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, -1, 0) +FROM raster_raster2world; + +SELECT + rid, + ST_Raster2WorldCoordY(rast, 1) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, 1) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, 2) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, 0) +FROM raster_raster2world; +SELECT + rid, + ST_Raster2WorldCoordY(rast, -1) +FROM raster_raster2world; + DROP TABLE raster_raster2world; diff --git a/raster/test/regress/rt_raster2worldcoord_expected b/raster/test/regress/rt_raster2worldcoord_expected index 91c6dc6c2..fb3793a9b 100644 --- a/raster/test/regress/rt_raster2worldcoord_expected +++ b/raster/test/regress/rt_raster2worldcoord_expected @@ -48,3 +48,253 @@ 12|-2|0 13|-2|2 14|-1|3 +0|-2 +1|0 +2|1 +3|1 +4|2 +10|-2 +11|0 +12|1 +13|1 +14|2 +0|-2 +1|0 +2|1 +3|1 +4|2 +10|-1 +11|1 +12|2 +13|2 +14|3 +0|-1 +1|1 +2|2 +3|2 +4|3 +10|0 +11|2 +12|3 +13|3 +14|4 +0|-3 +1|-1 +2|0 +3|0 +4|1 +10|-4 +11|-2 +12|-1 +13|-1 +14|0 +0|-4 +1|-2 +2|-1 +3|-1 +4|0 +10|-5 +11|-3 +12|-2 +13|-2 +14|-1 +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-2 +1|0 +2|1 +3|1 +4|2 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-2 +1|0 +2|1 +3|1 +4|2 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-1 +1|1 +2|2 +3|2 +4|3 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-3 +1|-1 +2|0 +3|0 +4|1 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-4 +1|-2 +2|-1 +3|-1 +4|0 +10| +11| +12| +13| +14| +0|-2 +1|0 +2|-1 +3|1 +4|2 +10|-2 +11|0 +12|-1 +13|1 +14|2 +0|-1 +1|1 +2|0 +3|2 +4|3 +10|-1 +11|1 +12|0 +13|2 +14|3 +0|-1 +1|1 +2|0 +3|2 +4|3 +10|-2 +11|0 +12|-1 +13|1 +14|2 +0|-3 +1|-1 +2|-2 +3|0 +4|1 +10|-2 +11|0 +12|-1 +13|1 +14|2 +0|-3 +1|-1 +2|-2 +3|0 +4|1 +10|-1 +11|1 +12|0 +13|2 +14|3 +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-2 +1|0 +2|-1 +3|1 +4|2 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-2 +1|0 +2|-1 +3|1 +4|2 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-1 +1|1 +2|0 +3|2 +4|3 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-3 +1|-1 +2|-2 +3|0 +4|1 +10| +11| +12| +13| +14| +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +NOTICE: Pixel row and column required for computing longitude and latitude of a rotated raster +0|-4 +1|-2 +2|-3 +3|-1 +4|0 +10| +11| +12| +13| +14| diff --git a/raster/test/regress/rt_world2rastercoord.sql b/raster/test/regress/rt_world2rastercoord.sql index 97a1c8e3b..75466192e 100644 --- a/raster/test/regress/rt_world2rastercoord.sql +++ b/raster/test/regress/rt_world2rastercoord.sql @@ -66,4 +66,119 @@ SELECT (ST_World2RasterCoord(rast, 2, 2)).* FROM raster_world2raster; +SELECT + rid, + (ST_World2RasterCoord(rast, ST_MakePoint(-2, -2))).* +FROM raster_world2raster; +SELECT + rid, + (ST_World2RasterCoord(rast, ST_MakePoint(0, 0))).* +FROM raster_world2raster; +SELECT + rid, + (ST_World2RasterCoord(rast, ST_MakePoint(1, -1))).* +FROM raster_world2raster; +SELECT + rid, + (ST_World2RasterCoord(rast, ST_MakePoint(1, 1))).* +FROM raster_world2raster; +SELECT + rid, + (ST_World2RasterCoord(rast, ST_MakePoint(2, 2))).* +FROM raster_world2raster; + +SELECT + rid, + ST_World2RasterCoordX(rast, -2, -2) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 0, 0) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 1, -1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 1, 1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 2, 2) +FROM raster_world2raster; + +SELECT + rid, + ST_World2RasterCoordX(rast, ST_MakePoint(-2, -2)) +FROM raster_world2raster; + +SELECT + rid, + ST_World2RasterCoordX(rast, -2) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 0) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordX(rast, 2) +FROM raster_world2raster; + +SELECT + rid, + ST_World2RasterCoordY(rast, -2, -2) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 0, 0) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 1, -1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 1, 1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 2, 2) +FROM raster_world2raster; + +SELECT + rid, + ST_World2RasterCoordX(rast, ST_MakePoint(-2, -2)) +FROM raster_world2raster; + +SELECT + rid, + ST_World2RasterCoordY(rast, -2) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 0) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 1) +FROM raster_world2raster; +SELECT + rid, + ST_World2RasterCoordY(rast, 2) +FROM raster_world2raster; + DROP TABLE raster_world2raster; diff --git a/raster/test/regress/rt_world2rastercoord_expected b/raster/test/regress/rt_world2rastercoord_expected index f09436b05..b56eb4b1d 100644 --- a/raster/test/regress/rt_world2rastercoord_expected +++ b/raster/test/regress/rt_world2rastercoord_expected @@ -48,3 +48,323 @@ 12|0|3 13|1|2 14|1|1 +0|1|1 +1|-1|-1 +2|-2|0 +3|-2|-2 +4|-3|-3 +10|1|1 +11|1|-1 +12|0|-1 +13|1|-2 +14|1|-3 +0|3|3 +1|1|1 +2|0|2 +3|0|0 +4|-1|-1 +10|1|3 +11|1|1 +12|0|1 +13|1|0 +14|1|-1 +0|4|2 +1|2|0 +2|1|1 +3|1|-1 +4|0|-2 +10|2|3 +11|2|1 +12|1|1 +13|2|0 +14|2|-1 +0|4|4 +1|2|2 +2|1|3 +3|1|1 +4|0|0 +10|1|4 +11|1|2 +12|0|2 +13|1|1 +14|1|0 +0|5|5 +1|3|3 +2|2|4 +3|2|2 +4|1|1 +10|1|5 +11|1|3 +12|0|3 +13|1|2 +14|1|1 +0|1 +1|-1 +2|-2 +3|-2 +4|-3 +10|1 +11|1 +12|0 +13|1 +14|1 +0|3 +1|1 +2|0 +3|0 +4|-1 +10|1 +11|1 +12|0 +13|1 +14|1 +0|4 +1|2 +2|1 +3|1 +4|0 +10|2 +11|2 +12|1 +13|2 +14|2 +0|4 +1|2 +2|1 +3|1 +4|0 +10|1 +11|1 +12|0 +13|1 +14|1 +0|5 +1|3 +2|2 +3|2 +4|1 +10|1 +11|1 +12|0 +13|1 +14|1 +0|1 +1|-1 +2|-2 +3|-2 +4|-3 +10|1 +11|1 +12|0 +13|1 +14|1 +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|1 +1|-1 +2|-2 +3|-2 +4|-3 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|3 +1|1 +2|0 +3|0 +4|-1 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|4 +1|2 +2|1 +3|1 +4|0 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|4 +1|2 +2|1 +3|1 +4|0 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|5 +1|3 +2|2 +3|2 +4|1 +10| +11| +12| +13| +14| +0|1 +1|-1 +2|0 +3|-2 +4|-3 +10|1 +11|-1 +12|-1 +13|-2 +14|-3 +0|3 +1|1 +2|2 +3|0 +4|-1 +10|3 +11|1 +12|1 +13|0 +14|-1 +0|2 +1|0 +2|1 +3|-1 +4|-2 +10|3 +11|1 +12|1 +13|0 +14|-1 +0|4 +1|2 +2|3 +3|1 +4|0 +10|4 +11|2 +12|2 +13|1 +14|0 +0|5 +1|3 +2|4 +3|2 +4|1 +10|5 +11|3 +12|3 +13|2 +14|1 +0|1 +1|-1 +2|-2 +3|-2 +4|-3 +10|1 +11|1 +12|0 +13|1 +14|1 +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|1 +1|-1 +2|0 +3|-2 +4|-3 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|3 +1|1 +2|2 +3|0 +4|-1 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|4 +1|2 +2|3 +3|1 +4|0 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|4 +1|2 +2|3 +3|1 +4|0 +10| +11| +12| +13| +14| +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +NOTICE: Latitude and longitude required for computing pixel row and column of a rotated raster +0|5 +1|3 +2|4 +3|2 +4|1 +10| +11| +12| +13| +14|