Hey all,

I'm trying to make use of ST_MapAlgebraFctNgb to do some inverse
distance weighting and noticed some unexpected behavior.

{{{
CREATE OR REPLACE FUNCTION ngb_test(matrix float8[][], nodatamode text,
VARIADIC args text[])
        RETURNS float8
        AS $$
        DECLARE
        BEGIN
                RAISE NOTICE '%', matrix;
                RETURN 255;
        END;
        $$ LANGUAGE 'plpgsql';

WITH foo AS (
SELECT
        ST_SetValues(
                ST_AddBand(
                        ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0)
                        , 1, '8BUI', 0, 0
                )
                , 1, 1, 1, ARRAY[
                        [ 1, 2, 3, 4, 5],
                        [ 6, 7, 8, 9,10],
                        [11,12,13,14,15],
                        [16,17,18,19,20],
                        [21,22,23,24,25]
                ]::double precision[]
        ) AS rast
)
SELECT
        (ST_PixelAsPoints(
                st_mapalgebrafctngb(rast, 1, NULL, 1, 1,
'ngb_test(float8[][],text,text[])'::regprocedure, 'NULL', NULL)
        )).*
FROM foo
}}}

In testing the neighborhood, the ngb_test function is only being called
for the interior pixels.  The function isn't called for the pixels found
at the edges.

Is this expected behavior?  My guess is no as far as my understanding of
the specs...

http://trac.osgeo.org/postgis/wiki/WKTRaster/SpecificationWorking02

"3) ST_MapAlgebraFctNgb(rast raster, band int, pixeltype text, radius
int, funcname text[, funcargs text]) - A one raster version taking a
user defined function (with optional parameters) of the set of first,
second, etc... neighbours of a pixel. The function is a user defined
PL/pgSQL function taking a matrix containing the neighbour values and
returning one value. Code do not exist yet but will be very much similar
to 2). Out of bound pixels values are set to NULL. This version requires
the user to write a PL/pgSQL function. Many predefined function should
be delivered."

The key part for me is that "Out of bound pixels values are set to
NULL.", which isn't how ST_MapAlgebraFctNgb is currently behaving.

-bborie
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to