]> granicus.if.org Git - postgis/commitdiff
Code cleanup in rt_pg/rt_pg.c. Changed point geometry variant of
authorBborie Park <bkpark at ucdavis.edu>
Thu, 18 Oct 2012 21:45:16 +0000 (21:45 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Thu, 18 Oct 2012 21:45:16 +0000 (21:45 +0000)
ST_SetValue() to wrap around geomval variant of ST_SetValues(). This
will result in a behavior change for geometry variant of ST_SetValue().

git-svn-id: http://svn.osgeo.org/postgis/trunk@10466 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_pg/rt_pg.c
raster/rt_pg/rtpostgis.sql.in.c
raster/rt_pg/rtpostgis_drop.sql.in.c
raster/test/regress/rt_pixelvalue.sql
raster/test/regress/rt_setvalues_geomval.sql

index 2c8ffa1805e714819c9c6fa0ddf85256b6033aa6..0cf2b7900bc287ee8e7f9324919f58dae6ab91fc 100644 (file)
@@ -3487,7 +3487,6 @@ Datum RASTER_setPixelValuesGeomval(PG_FUNCTION_ARGS)
        rt_raster _raster = NULL;
        rt_band _band = NULL;
        int nband = 0; /* 1-based */
-       rt_iterator itrset;
 
        int numbands = 0;
        int width = 0;
@@ -3732,7 +3731,6 @@ Datum RASTER_setPixelValuesGeomval(PG_FUNCTION_ARGS)
 
        /* all elements are points */
        if (allpoint == arg->ngv) {
-               POSTGIS_RT_DEBUG(3, "all geometries are points, using direct to pixel method");
                double igt[6] = {0};
                double xy[2] = {0};
                double value = 0;
@@ -3741,6 +3739,8 @@ Datum RASTER_setPixelValuesGeomval(PG_FUNCTION_ARGS)
                LWPOINT *point = NULL;
                POINT2D p;
 
+               POSTGIS_RT_DEBUG(3, "all geometries are points, using direct to pixel method");
+
                /* cache inverse gretransform matrix */
                rt_raster_get_inverse_geotransform_matrix(NULL, gt, igt);
 
@@ -3809,6 +3809,8 @@ Datum RASTER_setPixelValuesGeomval(PG_FUNCTION_ARGS)
        }
        /* run iterator otherwise */
        else {
+               rt_iterator itrset;
+
                POSTGIS_RT_DEBUG(3, "a mix of geometries, using iterator method");
 
                /* init itrset */
index 28a874c177db3293e546188c303cfa31f7edb16d..e1c67a11282091f284abb4dd0642f4c925d9aac5 100644 (file)
@@ -3987,52 +3987,6 @@ CREATE OR REPLACE FUNCTION st_setbandisnodata(rast raster, band integer DEFAULT
 -- Raster Pixel Editors
 -----------------------------------------------------------------------
 
------------------------------------------------------------------------
--- ST_SetValue (set one or more pixels to a single value)
------------------------------------------------------------------------
-
--- This function can not be STRICT, because newvalue can be NULL for nodata
-CREATE OR REPLACE FUNCTION st_setvalue(rast raster, band integer, x integer, y integer, newvalue float8)
-    RETURNS raster
-    AS 'MODULE_PATHNAME','RASTER_setPixelValue'
-    LANGUAGE 'c' IMMUTABLE;
-
--- This function can not be STRICT, because newvalue can be NULL for nodata
-CREATE OR REPLACE FUNCTION st_setvalue(rast raster, x integer, y integer, newvalue float8)
-    RETURNS raster
-    AS $$ SELECT st_setvalue($1, 1, $2, $3, $4) $$
-    LANGUAGE 'sql';
-
--- This function can not be STRICT, because newvalue can be NULL for nodata
-CREATE OR REPLACE FUNCTION st_setvalue(rast raster, band integer, pt geometry, newvalue float8)
-    RETURNS raster AS
-    $$
-    DECLARE
-        x float8;
-        y float8;
-        gtype text;
-    BEGIN
-        gtype := st_geometrytype(pt);
-        IF ( gtype != 'ST_Point' ) THEN
-            RAISE EXCEPTION 'Attempting to get the value of a pixel with a non-point geometry';
-        END IF;
-        x := st_x(pt);
-        y := st_y(pt);
-        RETURN st_setvalue(rast,
-                           band,
-                           st_world2rastercoordx(rast, x, y),
-                           st_world2rastercoordy(rast, x, y),
-                           newvalue);
-    END;
-    $$
-    LANGUAGE 'plpgsql' IMMUTABLE;
-
--- This function can not be STRICT, because newvalue can be NULL for nodata
-CREATE OR REPLACE FUNCTION st_setvalue(rast raster, pt geometry, newvalue float8)
-    RETURNS raster
-    AS $$ SELECT st_setvalue($1, 1, $2, $3) $$
-    LANGUAGE 'sql';
-
 -----------------------------------------------------------------------
 -- ST_SetValues (set one or more pixels to a one or more values)
 -----------------------------------------------------------------------
@@ -4121,14 +4075,38 @@ CREATE OR REPLACE FUNCTION st_setvalues(
        AS 'MODULE_PATHNAME', 'RASTER_setPixelValuesGeomval'
        LANGUAGE 'c' IMMUTABLE;
 
+-----------------------------------------------------------------------
+-- ST_SetValue (set one or more pixels to a single value)
+-----------------------------------------------------------------------
+
+-- This function can not be STRICT, because newvalue can be NULL for nodata
+CREATE OR REPLACE FUNCTION st_setvalue(rast raster, band integer, x integer, y integer, newvalue float8)
+    RETURNS raster
+    AS 'MODULE_PATHNAME','RASTER_setPixelValue'
+    LANGUAGE 'c' IMMUTABLE;
+
+-- This function can not be STRICT, because newvalue can be NULL for nodata
+CREATE OR REPLACE FUNCTION st_setvalue(rast raster, x integer, y integer, newvalue float8)
+    RETURNS raster
+    AS $$ SELECT st_setvalue($1, 1, $2, $3, $4) $$
+    LANGUAGE 'sql';
+
 -- cannot be STRICT as newvalue can be NULL
-CREATE OR REPLACE FUNCTION st_setvalues(
+CREATE OR REPLACE FUNCTION st_setvalue(
        rast raster, nband integer,
-       geom geometry, newvalue double precision,
-       keepnodata boolean DEFAULT FALSE
+       geom geometry, newvalue double precision
+)
+       RETURNS raster
+       AS $$ SELECT st_setvalues($1, $2, ARRAY[ROW($3, $4)]::geomval[], FALSE) $$
+       LANGUAGE 'sql' IMMUTABLE;
+
+-- cannot be STRICT as newvalue can be NULL
+CREATE OR REPLACE FUNCTION st_setvalue(
+       rast raster,
+       geom geometry, newvalue double precision
 )
        RETURNS raster
-       AS $$ SELECT st_setvalues($1, $2, ARRAY[ROW($3, $4)]::geomval[], $5) $$
+       AS $$ SELECT st_setvalues($1, 1, ARRAY[ROW($2, $3)]::geomval[], FALSE) $$
        LANGUAGE 'sql' IMMUTABLE;
 
 -----------------------------------------------------------------------
index fbcadb33475bead1d94e2382d0730e7bed4c86dd..5641cde2373a5f03c39faa9943c1c6da9ce57b7f 100644 (file)
@@ -174,6 +174,8 @@ DROP FUNCTION IF EXISTS st_value(raster, integer, integer, integer, boolean);
 DROP FUNCTION IF EXISTS st_value(raster, integer, integer, boolean);
 DROP FUNCTION IF EXISTS st_value(raster, integer, geometry, boolean);
 DROP FUNCTION IF EXISTS st_value(raster, geometry, boolean);
+DROP FUNCTION IF EXISTS st_value(raster, integer, geometry, double precision);
+DROP FUNCTION IF EXISTS st_value(raster, geometry, double precision);
 
 -- function no longer exists
 DROP FUNCTION IF EXISTS st_georeference(raster);
@@ -393,12 +395,6 @@ DROP FUNCTION IF EXISTS st_intersection(raster, integer, raster, integer, regpro
 DROP FUNCTION IF EXISTS st_intersection(raster, raster, text, regprocedure);
 DROP FUNCTION IF EXISTS st_intersection(raster, raster, regprocedure);
 
--- parameter name change
-DROP FUNCTION IF EXISTS st_value(raster, integer, integer, integer, boolean);
-DROP FUNCTION IF EXISTS st_value(raster, integer, integer, boolean);
-DROP FUNCTION IF EXISTS st_value(raster, integer, geometry, boolean);
-DROP FUNCTION IF EXISTS st_value(raster, geometry, boolean);
-
 -- function deprecated
 DROP FUNCTION IF EXISTS st_pixelaspolygons(raster, integer);
 
index aae9c7b35b6f368a349112ea5cd5d20eb3886fb9..9e4ae984601cd2a7bd76a3cbc64a32799190e9d9 100644 (file)
@@ -317,12 +317,4 @@ SELECT 'test 4.4', id
     FROM rt_band_properties_test
     WHERE st_value(st_setvalue(st_setbandnodatavalue(rast, NULL), 1, 1, 1, NULL), 1, 1, 1) != b1val;
 
------------------------------------------------------------------------
--- Test 5 - st_setvalue(rast raster, band integer, pt geometry, val float8)
------------------------------------------------------------------------
-
-SELECT 'test 5.1', id
-    FROM rt_band_properties_test
-    WHERE st_value(st_setvalue(rast, 1, st_makepoint(st_upperleftx(rast), st_upperlefty(rast)), 3), 1, 1, 1) != 3;
-
 DROP TABLE rt_band_properties_test;
index 67e1aed3157497264b6deaef9e9df8e6786ff099..ac145e00e1eaac40133f133b178f5d9b39fbb182 100644 (file)
@@ -12,7 +12,7 @@ CREATE TABLE raster_setvalues_geom AS
 ;
 
 SELECT
-       rid, gid, ST_DumpValues(ST_SetValues(rast, 1, geom, gid))
+       rid, gid, ST_DumpValues(ST_SetValue(rast, 1, geom, gid))
 FROM raster_setvalues_rast t1
 CROSS JOIN raster_setvalues_geom t2
 ORDER BY rid, gid;