Guest User

Untitled

a guest
Nov 15th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. --TEST 1
  2. CREATE TABLE p839.image_average AS
  3. SELECT ST_MapAlgebra(ARRAY[ROW(rast, 1)]::rastbandarg[], 'st_mean4ma(double precision[][][], integer[][], text[])'::regprocedure, '32BF', null, null, 1,1
  4. ) as rast
  5. FROM p839.image_normal;
  6. CREATE INDEX idx_image_average_rast ON p839.image_average USING GIST (ST_ConvexHull(rast));
  7. --TIME = 51:40
  8. --ARTIFACT TILES PRESENT = TRUE
  9.  
  10. --TEST 2
  11. CREATE TABLE p839.image_average AS
  12. SELECT ST_MapAlgebra(ARRAY[ROW(rast, 1)]::rastbandarg[], 'ImageAnalysis_Average(float[][][], text, text[])'::regprocedure, '32BF', null, null, 1,1
  13. ) as rast
  14. FROM p839.image_normal;
  15. CREATE INDEX idx_image_average_rast ON p839.image_average USING GIST (ST_ConvexHull(rast));
  16. --TIME = 23:53
  17. --ARTIFACT TILES PRESENT = TRUE
  18.  
  19. --TEST 3
  20. CREATE TABLE p839.image_average AS
  21. SELECT ST_MapAlgebra(ARRAY[ROW(ST_Union(rast), 1)]::rastbandarg[], 'ImageAnalysis_Average(float[][][], text, text[])'::regprocedure, '32BF', null, null, 1,1
  22. ) as rast
  23. FROM p839.image_normal;
  24. CREATE INDEX idx_image_average_rast ON p839.image_average USING GIST (ST_ConvexHull(rast));
  25. --TIME = MEMORY ALLOCATION ERROR
  26. --ARTIFACT TILES PRESENT = N/A
  27.  
  28.  
  29. -- THE CUSTOM IMAGE AVERAGE FUNCTION
  30. CREATE OR REPLACE FUNCTION imageanalysis_average(
  31. IN matrix double precision[],
  32. IN nodatamode text,
  33. VARIADIC args text[])
  34. RETURNS double precision AS
  35. $BODY$
  36. DECLARE
  37. _matrix float[][];
  38. sum float;
  39. BEGIN
  40. _matrix := matrix;
  41. sum := 0;
  42. FOR x in array_lower(matrix, 1)..array_upper(matrix, 1) LOOP
  43. FOR y in array_lower(matrix, 2)..array_upper(matrix, 2) LOOP
  44. sum := sum + _matrix[1][x][y];
  45. END LOOP;
  46. END LOOP;
  47. RETURN (sum*1.0/(array_upper(matrix,1)*array_upper(matrix,2) ))::float ;
  48. END;
  49. $BODY$
  50. LANGUAGE plpgsql IMMUTABLE
  51. COST 100;
Add Comment
Please, Sign In to add comment