]> granicus.if.org Git - postgis/commitdiff
Additional cleanup of a few functions using ST_PixelAsPolygon(raster, int, int, int...
authorBborie Park <bkpark at ucdavis.edu>
Wed, 1 Feb 2012 15:28:40 +0000 (15:28 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Wed, 1 Feb 2012 15:28:40 +0000 (15:28 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8999 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_pg/rt_pg.c
raster/rt_pg/rtpostgis.sql.in.c
raster/test/regress/rt_mapalgebraexpr_2raster.sql

index 45a0852a1152d47452a7046b26a3160c8d44d84c..83fe02e674f4a6fa88265d917e1610d16fb4b1bd 100644 (file)
@@ -8832,7 +8832,7 @@ Datum RASTER_mapAlgebra2(PG_FUNCTION_ARGS)
                        */
                        for (i = 0; i < spicount; i++) {
                                if (!PG_ARGISNULL(exprpos[i])) {
-                                       char *tmp = rtpg_strtoupper(text_to_cstring(PG_GETARG_TEXT_P(exprpos[i])));
+                                       char *tmp = text_to_cstring(PG_GETARG_TEXT_P(exprpos[i]));
                                        POSTGIS_RT_DEBUGF(3, "raw expr #%d: %s", i, tmp);
 
                                        len = 0;
index 18a7639b1976f0dfeecc0706c7b32f1d80deca47..8e23a84a17eaf02e5fe0fd2b88eab98cfb3bc34c 100644 (file)
@@ -3094,7 +3094,7 @@ CREATE OR REPLACE FUNCTION _st_intersects(geom geometry, rast raster, nband inte
                                FOR x IN x1+xinc..x2 BY 3 LOOP
                                        FOR y IN y1+yinc..y2 BY 3 LOOP
                                                -- Check first if the pixel intersects with the geometry. Often many won't.
-                                               bintersect := NOT st_isempty(st_intersection(st_pixelaspolygon(rast, nband, x, y), geom));
+                                               bintersect := NOT st_isempty(st_intersection(st_pixelaspolygon(rast, x, y), geom));
 
                                                IF bintersect THEN
                                                        -- If the pixel really intersects, check its value. Return TRUE if with value.
@@ -3192,14 +3192,14 @@ CREATE OR REPLACE FUNCTION _st_intersection(
                rtn := NULL;
                CASE
                        WHEN _returnband = 'FIRST' THEN
-                               rtn := ST_MapAlgebraExpr(rast1, band1, rast2, band2, 'rast1', NULL, extenttype);
+                               rtn := ST_MapAlgebraExpr(rast1, band1, rast2, band2, 'RAST1', NULL, extenttype);
                        WHEN _returnband = 'SECOND' THEN
-                               rtn := ST_MapAlgebraExpr(rast2, band2, rast1, band1, 'rast1', NULL, extenttype);
+                               rtn := ST_MapAlgebraExpr(rast2, band2, rast1, band1, 'RAST1', NULL, extenttype);
                        WHEN _returnband = 'OTHER' THEN
                                rtn := ST_MapAlgebraFct(rast1, band1, rast2, band2, otheruserfunc, NULL, extenttype);
                        ELSE -- BOTH
-                               rtn := ST_MapAlgebraExpr(rast1, band1, rast2, band2, 'rast1', NULL, extenttype);
-                               rtn := ST_AddBand(rtn, ST_MapAlgebraExpr(rast2, band2, rast1, band1, 'rast1', NULL, extenttype));
+                               rtn := ST_MapAlgebraExpr(rast1, band1, rast2, band2, 'RAST1', NULL, extenttype);
+                               rtn := ST_AddBand(rtn, ST_MapAlgebraExpr(rast2, band2, rast1, band1, 'RAST1', NULL, extenttype));
                END CASE;
 
                RETURN rtn;
@@ -3316,20 +3316,20 @@ CREATE OR REPLACE FUNCTION _ST_MapAlgebra4UnionState(rast1 raster,  rast2 raster
         --             There we always set that to band 1 regardless of what band num is requested
         IF upper(p_expression) = 'LAST' THEN
             --RAISE NOTICE 'last asked for ';
-            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'rast2'::text, NULL::text, 'UNION'::text, 'rast2'::text, 'rast1'::text, NULL::double precision);
+            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'RAST2'::text, NULL::text, 'UNION'::text, 'RAST2'::text, 'RAST1'::text, NULL::double precision);
         ELSIF upper(p_expression) = 'FIRST' THEN
-            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'rast1'::text, NULL::text, 'UNION'::text, 'rast2'::text, 'rast1'::text, NULL::double precision);
+            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'RAST1'::text, NULL::text, 'UNION'::text, 'RAST2'::text, 'RAST1'::text, NULL::double precision);
         ELSIF upper(p_expression) = 'MIN' THEN
-            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'LEAST(rast1, rast2)'::text, NULL::text, 'UNION'::text, 'rast2'::text, 'rast1'::text, NULL::double precision);
+            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'LEAST(RAST1, RAST2)'::text, NULL::text, 'UNION'::text, 'RAST2'::text, 'RAST1'::text, NULL::double precision);
         ELSIF upper(p_expression) = 'MAX' THEN
-            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'GREATEST(rast1, rast2)'::text, NULL::text, 'UNION'::text, 'rast2'::text, 'rast1'::text, NULL::double precision);
+            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'GREATEST(RAST1, RAST2)'::text, NULL::text, 'UNION'::text, 'RAST2'::text, 'RAST1'::text, NULL::double precision);
         ELSIF upper(p_expression) = 'COUNT' THEN
-            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'rast1 + 1'::text, NULL::text, 'UNION'::text, '1'::text, 'rast1'::text, 0::double precision);
+            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'RAST1 + 1'::text, NULL::text, 'UNION'::text, '1'::text, 'RAST1'::text, 0::double precision);
         ELSIF upper(p_expression) = 'SUM' THEN
-            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'rast1 + rast2'::text, NULL::text, 'UNION'::text, 'rast2'::text, 'rast1'::text, NULL::double precision);
+            RETURN ST_MapAlgebraExpr(rast1, 1, rast2, 1, 'RAST1 + RAST2'::text, NULL::text, 'UNION'::text, 'RAST2'::text, 'RAST1'::text, NULL::double precision);
         ELSIF upper(p_expression) = 'RANGE' THEN
         -- have no idea what this is 
-            t_raster = ST_MapAlgebraExpr(rast1, 2, rast2, 1, 'LEAST(rast1, rast2)'::text, NULL::text, 'UNION'::text, 'rast2'::text, 'rast1'::text, NULL::double precision);
+            t_raster = ST_MapAlgebraExpr(rast1, 2, rast2, 1, 'LEAST(RAST1, RAST2)'::text, NULL::text, 'UNION'::text, 'RAST2'::text, 'RAST1'::text, NULL::double precision);
             p_raster := _ST_MapAlgebra4UnionState(rast1, rast2, 'MAX'::text, NULL::text, NULL::text, NULL::double precision, NULL::text, NULL::text, NULL::text, NULL::double precision);
             RETURN ST_AddBand(p_raster, t_raster, 1, 2);
         ELSIF upper(p_expression) = 'MEAN' THEN
@@ -3337,7 +3337,7 @@ CREATE OR REPLACE FUNCTION _ST_MapAlgebra4UnionState(rast1 raster,  rast2 raster
         -- and p_raster is there to keep track of accumulated sum and final state function
         -- would then do a final map to divide them.  This one is currently broken because 
                -- have not reworked it so it can do without a final function
-            t_raster = ST_MapAlgebraExpr(rast1, 2, rast2, 1, 'rast1 + 1'::text, NULL::text, 'UNION'::text, '1'::text, 'rast1'::text, 0::double precision);
+            t_raster = ST_MapAlgebraExpr(rast1, 2, rast2, 1, 'RAST1 + 1'::text, NULL::text, 'UNION'::text, '1'::text, 'RAST1'::text, 0::double precision);
             p_raster := _ST_MapAlgebra4UnionState(rast1, rast2, 'SUM'::text, NULL::text, NULL::text, NULL::double precision, NULL::text, NULL::text, NULL::text, NULL::double precision);
             RETURN ST_AddBand(p_raster, t_raster, 1, 2);
         ELSE
@@ -3389,7 +3389,7 @@ CREATE OR REPLACE FUNCTION _ST_MapAlgebra4UnionFinal1(rast raster)
        -- NOTE: I have to sacrifice RANGE.  Sorry RANGE.  Any 2 banded raster is going to be treated
        -- as a MEAN
         IF ST_NumBands(rast) = 2 THEN
-            RETURN ST_MapAlgebraExpr(rast, 1, rast, 2, 'CASE WHEN rast2 > 0 THEN rast1 / rast2::float8 ELSE NULL END'::text, NULL::text, 'UNION'::text, NULL::text, NULL::text, NULL::double precision);
+            RETURN ST_MapAlgebraExpr(rast, 1, rast, 2, 'CASE WHEN RAST2 > 0 THEN RAST1 / RAST2::float8 ELSE NULL END'::text, NULL::text, 'UNION'::text, NULL::text, NULL::text, NULL::double precision);
         ELSE
             RETURN rast;
         END IF;
@@ -3489,7 +3489,7 @@ CREATE OR REPLACE FUNCTION st_clip(rast raster, band int, geom geometry, nodata
                sourceraster := ST_SetBandNodataValue(sourceraster, bandstart, newnodata);
 
                -- Compute the first raster band
-               newrast := ST_MapAlgebraExpr(sourceraster, bandstart, geomrast, 1, 'rast1', newpixtype, newextent);
+               newrast := ST_MapAlgebraExpr(sourceraster, bandstart, geomrast, 1, 'RAST1', newpixtype, newextent);
 
                FOR bandi IN bandstart+1..bandend LOOP
 --RAISE NOTICE 'bandi=%', bandi;
@@ -3497,7 +3497,7 @@ CREATE OR REPLACE FUNCTION st_clip(rast raster, band int, geom geometry, nodata
                        newpixtype := ST_BandPixelType(rast, bandi);
                        newnodata := coalesce(nodata, ST_BandNodataValue(sourceraster, bandi), ST_MinPossibleValue(newpixtype));
                        sourceraster := ST_SetBandNodataValue(sourceraster, bandi, newnodata);
-                       newrast := ST_AddBand(newrast, ST_MapAlgebraExpr(sourceraster, bandi, geomrast, 1, 'rast1', newpixtype, newextent));
+                       newrast := ST_AddBand(newrast, ST_MapAlgebraExpr(sourceraster, bandi, geomrast, 1, 'RAST1', newpixtype, newextent));
                END LOOP;
 
                RETURN newrast;
index 454ff6e7923ea71fbe4c5f9a42e74710175f6dd2..8860aec82c64f7203365c53b6339f53730649429 100644 (file)
@@ -56,7 +56,7 @@ DROP FUNCTION make_test_raster(integer, integer, integer, double precision, doub
 -- INTERSECTION
 INSERT INTO raster_mapalgebra_out
        (SELECT r1.rid, r2.rid, 'INTERSECTION', st_mapalgebraexpr(
-               r1.rast, r2.rast, 'rast1', '32BF', 'INTERSECTION'
+               r1.rast, r2.rast, 'RAST1', '32BF', 'INTERSECTION'
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -65,7 +65,7 @@ INSERT INTO raster_mapalgebra_out
                AND r2.rid BETWEEN 1 AND 9
        ) UNION ALL (
        SELECT r1.rid, r2.rid, 'INTERSECTION', st_mapalgebraexpr(
-               r1.rast, r2.rast, 'rast1', '32BF', 'INTERSECTION'
+               r1.rast, r2.rast, 'RAST1', '32BF', 'INTERSECTION'
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -76,28 +76,28 @@ INSERT INTO raster_mapalgebra_out
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, rid, 'INTERSECTION', st_mapalgebraexpr(
-               NULL::raster, rast, 'rast1', '32BF', 'INTERSECTION'
+               NULL::raster, rast, 'RAST1', '32BF', 'INTERSECTION'
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT rid, NULL AS rid, 'INTERSECTION', st_mapalgebraexpr(
-               rast, NULL::raster, 'rast1', '32BF', 'INTERSECTION'
+               rast, NULL::raster, 'RAST1', '32BF', 'INTERSECTION'
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, NULL AS rid, 'INTERSECTION', st_mapalgebraexpr(
-               NULL::raster, NULL::raster, 'rast1', '32BF', 'INTERSECTION'
+               NULL::raster, NULL::raster, 'RAST1', '32BF', 'INTERSECTION'
        )
 ;
 
 -- UNION
 INSERT INTO raster_mapalgebra_out
        (SELECT r1.rid, r2.rid, 'UNION', st_mapalgebraexpr(
-               r1.rast, r2.rast, '((rast1 + rast2)/2.)::numeric', '32BF', 'UNION', 'rast2', 'rast1', NULL
+               r1.rast, r2.rast, '((RAST1 + RAST2)/2.)::numeric', '32BF', 'UNION', 'RAST2', 'RAST1', NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -106,7 +106,7 @@ INSERT INTO raster_mapalgebra_out
                AND r2.rid BETWEEN 1 AND 9
        ) UNION ALL (
        SELECT r1.rid, r2.rid, 'UNION', st_mapalgebraexpr(
-               r1.rast, r2.rast, '((rast1 + rast2)/2.)::numeric', '32BF', 'UNION', 'rast2', 'rast1', NULL
+               r1.rast, r2.rast, '((RAST1 + RAST2)/2.)::numeric', '32BF', 'UNION', 'RAST2', 'RAST1', NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -117,7 +117,7 @@ INSERT INTO raster_mapalgebra_out
 
 INSERT INTO raster_mapalgebra_out
        (SELECT r1.rid, r2.rid, 'UNION', st_mapalgebraexpr(
-               r1.rast, r2.rast, '((rast1 + rast2)/2.)::numeric', '32BF', 'UNION', '100', '200', NULL
+               r1.rast, r2.rast, '((RAST1 + RAST2)/2.)::numeric', '32BF', 'UNION', '100', '200', NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -126,7 +126,7 @@ INSERT INTO raster_mapalgebra_out
                AND r2.rid BETWEEN 1 AND 9
        ) UNION ALL (
        SELECT r1.rid, r2.rid, 'UNION', st_mapalgebraexpr(
-               r1.rast, r2.rast, '((rast1 + rast2)/2.)::numeric', '32BF', 'UNION', '100', '200', NULL
+               r1.rast, r2.rast, '((RAST1 + RAST2)/2.)::numeric', '32BF', 'UNION', '100', '200', NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -137,28 +137,28 @@ INSERT INTO raster_mapalgebra_out
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, rid, 'UNION', st_mapalgebraexpr(
-               NULL::raster, rast, '((rast1 + rast2)/2.)::numeric', '32BF', 'UNION', 'rast2', 'rast1', NULL
+               NULL::raster, rast, '((RAST1 + RAST2)/2.)::numeric', '32BF', 'UNION', 'RAST2', 'RAST1', NULL
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT rid, NULL AS rid, 'UNION', st_mapalgebraexpr(
-               rast, NULL::raster, '((rast1 + rast2)/2.)::numeric', '32BF', 'UNION', 'rast2', 'rast1', NULL
+               rast, NULL::raster, '((RAST1 + RAST2)/2.)::numeric', '32BF', 'UNION', 'RAST2', 'RAST1', NULL
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, NULL AS rid, 'UNION', st_mapalgebraexpr(
-               NULL::raster, NULL::raster, '((rast1 + rast2)/2.)::numeric', '32BF', 'UNION', 'rast2', 'rast1', NULL
+               NULL::raster, NULL::raster, '((RAST1 + RAST2)/2.)::numeric', '32BF', 'UNION', 'RAST2', 'RAST1', NULL
        )
 ;
 
 -- FIRST
 INSERT INTO raster_mapalgebra_out
        (SELECT r1.rid, r2.rid, 'FIRST', st_mapalgebraexpr(
-               r1.rast, r2.rast, 'CASE WHEN rast2 IS NOT NULL THEN NULL ELSE rast1 END', '32BF', 'FIRST', NULL, 'rast1', NULL
+               r1.rast, r2.rast, 'CASE WHEN RAST2 IS NOT NULL THEN NULL ELSE RAST1 END', '32BF', 'FIRST', NULL, 'RAST1', NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -167,7 +167,7 @@ INSERT INTO raster_mapalgebra_out
                AND r2.rid BETWEEN 1 AND 9
        ) UNION ALL (
        SELECT r1.rid, r2.rid, 'FIRST', st_mapalgebraexpr(
-               r1.rast, r2.rast, 'CASE WHEN rast2 IS NOT NULL THEN NULL ELSE rast1 END', '32BF', 'FIRST', NULL, 'rast1', NULL
+               r1.rast, r2.rast, 'CASE WHEN RAST2 IS NOT NULL THEN NULL ELSE RAST1 END', '32BF', 'FIRST', NULL, 'RAST1', NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -178,28 +178,28 @@ INSERT INTO raster_mapalgebra_out
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, rid, 'FIRST', st_mapalgebraexpr(
-               NULL::raster, rast, 'CASE WHEN rast1 IS NOT NULL THEN NULL ELSE rast2 END', '32BF', 'FIRST', 'rast2', NULL, NULL
+               NULL::raster, rast, 'CASE WHEN RAST1 IS NOT NULL THEN NULL ELSE RAST2 END', '32BF', 'FIRST', 'RAST2', NULL, NULL
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT rid, NULL AS rid, 'FIRST', st_mapalgebraexpr(
-               rast, NULL::raster, 'CASE WHEN rast2 IS NOT NULL THEN NULL ELSE rast1 END', '32BF', 'FIRST', NULL, 'rast1', NULL
+               rast, NULL::raster, 'CASE WHEN RAST2 IS NOT NULL THEN NULL ELSE RAST1 END', '32BF', 'FIRST', NULL, 'RAST1', NULL
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, NULL AS rid, 'FIRST', st_mapalgebraexpr(
-               NULL::raster, NULL::raster, 'CASE WHEN rast2 IS NOT NULL THEN NULL ELSE rast1 END', '32BF', 'FIRST', NULL, 'rast1', NULL
+               NULL::raster, NULL::raster, 'CASE WHEN RAST2 IS NOT NULL THEN NULL ELSE RAST1 END', '32BF', 'FIRST', NULL, 'RAST1', NULL
        )
 ;
 
 -- SECOND
 INSERT INTO raster_mapalgebra_out
        (SELECT r1.rid, r2.rid, 'SECOND', st_mapalgebraexpr(
-               r1.rast, r2.rast, 'CASE WHEN rast1 IS NOT NULL THEN NULL ELSE rast2 END', '32BF', 'SECOND', 'rast2', NULL, NULL
+               r1.rast, r2.rast, 'CASE WHEN RAST1 IS NOT NULL THEN NULL ELSE RAST2 END', '32BF', 'SECOND', 'RAST2', NULL, NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -208,7 +208,7 @@ INSERT INTO raster_mapalgebra_out
                AND r2.rid BETWEEN 1 AND 9
        ) UNION ALL (
        SELECT r1.rid, r2.rid, 'SECOND', st_mapalgebraexpr(
-               r1.rast, r2.rast, 'CASE WHEN rast1 IS NOT NULL THEN NULL ELSE rast2 END', '32BF', 'SECOND', 'rast2', NULL, NULL
+               r1.rast, r2.rast, 'CASE WHEN RAST1 IS NOT NULL THEN NULL ELSE RAST2 END', '32BF', 'SECOND', 'RAST2', NULL, NULL
        )
        FROM raster_mapalgebra r1
        JOIN raster_mapalgebra r2
@@ -219,21 +219,21 @@ INSERT INTO raster_mapalgebra_out
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, rid, 'SECOND', st_mapalgebraexpr(
-               NULL::raster, rast, 'CASE WHEN rast1 IS NOT NULL THEN NULL ELSE rast2 END', '32BF', 'SECOND', 'rast2', NULL, NULL
+               NULL::raster, rast, 'CASE WHEN RAST1 IS NOT NULL THEN NULL ELSE RAST2 END', '32BF', 'SECOND', 'RAST2', NULL, NULL
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT rid, NULL AS rid, 'SECOND', st_mapalgebraexpr(
-               rast, NULL::raster, 'CASE WHEN rast1 IS NOT NULL THEN NULL ELSE rast2 END', '32BF', 'SECOND', 'rast2', NULL, NULL
+               rast, NULL::raster, 'CASE WHEN RAST1 IS NOT NULL THEN NULL ELSE RAST2 END', '32BF', 'SECOND', 'RAST2', NULL, NULL
        )
        FROM raster_mapalgebra
 ;
 
 INSERT INTO raster_mapalgebra_out
        SELECT NULL AS rid, NULL AS rid, 'SECOND', st_mapalgebraexpr(
-               NULL::raster, NULL::raster, 'CASE WHEN rast1 IS NOT NULL THEN NULL ELSE rast2 END', '32BF', 'SECOND', 'rast2', NULL, NULL
+               NULL::raster, NULL::raster, 'CASE WHEN RAST1 IS NOT NULL THEN NULL ELSE RAST2 END', '32BF', 'SECOND', 'RAST2', NULL, NULL
        )
 ;