From 51715284de0833daed1674f5d7693ae12cbba2ed Mon Sep 17 00:00:00 2001 From: Regina Obe Date: Fri, 18 Nov 2011 02:31:02 +0000 Subject: [PATCH] ST_MapAlgebraFctNgb (and put in immuatable for other st_mapalgebras) git-svn-id: http://svn.osgeo.org/postgis/trunk@8170 b70326c6-7e19-0410-871a-916f4a2858ee --- doc/html/images/st_mapalgebrafctngb01.png | Bin 0 -> 25761 bytes doc/html/images/st_mapalgebrafctngb02.png | Bin 0 -> 12029 bytes doc/reference_raster.xml | 146 +++++++++++++++++++++- 3 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 doc/html/images/st_mapalgebrafctngb01.png create mode 100644 doc/html/images/st_mapalgebrafctngb02.png diff --git a/doc/html/images/st_mapalgebrafctngb01.png b/doc/html/images/st_mapalgebrafctngb01.png new file mode 100644 index 0000000000000000000000000000000000000000..5a70af9acff9f69d975aa8be5009f293a90dfaba GIT binary patch literal 25761 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%0DETYzH9!%rqa^XLPBY)517sQ?i9lmQ}1;*T%&qC zMQgJ0bBYH?l*`0)YNA@+5J*sl{Qd*=c6HX^i;Zk*AmiHJD_^8OiU z6M`;!E2RJS9oZ|ytJZ<91$Mdji0B)N&y}BO6fZ}l;y-nEej^*^ znod049{%O8kNy1MwgXF#1TS!@zUi+%>_3y<4xF{owQO#tWm@x7Of15ZF2V{m$J%Cn zBd=bOMN>#gxHZ>f~4KJ0;oie}yMx8*ubU+7oe ze_Y^QtvAkWXq*1fFPP;XL)Nf)+I?(DM%Bf;=cKb@Yc6aHEr=t)_l_W8#g{*vs=1i^SQeuFM3Nf{`Zd z^Tu2;P-=6R3?R2xwlIF0w!BH1ah7P3n2kQu$VJNCl?HamI)DH1eat`n-hKJTEzf=Z zz*9Kmyn-HOL?uhrs@>_2yl7k43aorr-rM)s%viJ8oGN|(hxe(E4wd%&WKH>&FMRrk zO#R8)*Y0#W7=!K#axxXS*VdQ&h!eH^)T)xNN0nm>JvYs)`0(l%Zl6N#rt&2j6GK;K zi`{Oa+2LABZ$d2V4z|)nne(@~y^i*EwyYFGnF?1xlN;Fn;vG}b)}Qq53U0Hevn0_W zagtoIy_^@sz2i-BU?Y-on?w}01!7$;KgT%;&E#vAr2u+rZw@kIYq%E7F3fOuJd^p- z`B-fvT|jHAuj|wGyU@cxS6G#>=ey@HmZ*|p7?xHUAxwk^%>Jj;%(Hvn%Z3tErgCuT zosKuhyW&ssg|8jWunQZyL%cb9iYAG7hIUNHQKUHnqYKs@m#*0J0sl*$<q5>zW@LL07*qoM6N<$f*dWey8r+H literal 0 HcmV?d00001 diff --git a/doc/html/images/st_mapalgebrafctngb02.png b/doc/html/images/st_mapalgebrafctngb02.png new file mode 100644 index 0000000000000000000000000000000000000000..90163b3fc4d02e9b0df1e6221bd6a5c7e776e9dd GIT binary patch literal 12029 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 + LANGUAGE 'plpgsql' IMMUTABLE; The userfunction is required to accept two arguments: a float value, and a variadic text array. The first argument is the value of an individual raster cell (regardless of the raster datatype), and the second argument indicates that all remaining parameters to shall be passed through to the userfunction. Passing a regprodedure argument to a SQL function requires the full function signature to be passed, then cast to a regprocedure type. To pass the above example PL/pgSQL function as an argument, the SQL for the argument is:'simple_function(float,text[])'::regprocedureNote that the argument contains the name of the function, the types of the function arguments, quotes around the name and argument types, and a cast to a regprocedure. @@ -5738,7 +5738,7 @@ BEGIN RETURN pixel::integer % 2; END; $$ -LANGUAGE 'plpgsql'; +LANGUAGE 'plpgsql' IMMUTABLE; UPDATE dummy_rast SET map_rast = ST_MapAlgebraFct(rast,NULL,'mod_fct(float,text[])'::regprocedure) WHERE rid = 2; @@ -6050,6 +6050,148 @@ SELECT ST_MapAlgebraFct(m1.rast, 1, m1.rast,3 , + + + ST_MapAlgebraFctNgb + + 1-band version: Map Algebra Nearest Neighbor using user-defined PostgreSQL function. Return a raster which values are the result of a PLPGSQL user function involving a neighborhood of values from the input raster band. + + + + + + raster ST_MapAlgebraFctNgb + raster rast + integer band + integer ngbwidth + integer ngbheight + regprocedure userfunction + text nodatamode + text[] VARIADIC args + + + + + + + Description + + (one raster version) Return a raster which values + are the result of a PLPGSQL user function involving a + neighborhood of values from the input raster band. + + + + rast + Raster on which the user function is evaluated. + + + band + Band number of the raster to be evaluated. Default to 1. + + + pixeltype + The resulting pixel type of the output raster. Must be one listed in or left out or set to NULL. If not passed in or set to NULL, will default to the pixeltype of the rast. Results are truncated if they are larger than what is allowed for the pixeltype + + + ngbwidth + The width of the neighborhood, in cells. + + + ngbheight + The height of the neighborhood, in cells. + + + userfunction + PLPGSQL user function to apply to neighborhod pixels. + + + args + Arguments to pass into the user function. + + + Availability: 2.0.0 + + + + + + + Examples + +-- +-- A simple 'callback' user function that sums up all the values in a neighborhood. +-- +CREATE OR REPLACE FUNCTION rast_avg(matrix float[][], nodatamode text, variadic args text[]) + RETURNS float AS + $$ + DECLARE + _matrix float[][]; + x1 integer; + x2 integer; + y1 integer; + y2 integer; + sum float; + BEGIN + _matrix := matrix; + sum := 0; + FOR x in array_lower(matrix, 1)..array_upper(matrix, 1) LOOP + FOR y in array_lower(matrix, 2)..array_upper(matrix, 2) LOOP + IF _matrix[x][y] IS NULL THEN + IF nodatamode = 'ignore' THEN + _matrix[x][y] := 0; + ELSE + _matrix[x][y] := nodatamode::float; + END IF; + END IF; + sum := sum + _matrix[x][y]; + END LOOP; + END LOOP; + RETURN (sum*1.0/(array_upper(matrix,1)*array_upper(matrix,2) ))::integer ; + END; + $$ + LANGUAGE 'plpgsql' IMMUTABLE COST 1000; + +-- now we apply to our rescaled katrina averaging pixels within 2 pixels of each other -- +SELECT ST_MapAlgebraFctNgb(rast, 1, '8BUI', 2, 2, 'rast_avg(float[][], text, text[])'::regprocedure, 'NULL', NULL) As neared + FROM katrinas_rescaled + limit 1; + + + + + + + + + + + + First band of our raster + + + + + + + + new raster after averaging pixels withing 2x2 pixels of each other + + + + + + + + + + + See Also + + + + + ST_Polygon -- 2.40.0