近期有个需求要计算多幅栅格的总和, 比如: 气象降雨栅格每5分钟更新一幅,每个小时有12幅栅格,业务要求统计每个小时的降雨量, 这就需要把这12幅栅格数据进行求和汇总为一幅新栅格以便于后续处理.不知道PostGis是否已有相关的函数, 如果有的话还请不吝赐教.由于未找到可用函数,隧而使用自定义函数处理.
两个思路:
①提取栅格数据为二维数组,对数据进行求和,利用ST_SetValues函数更新栅格数据
②编写函数, 循环调用ST_MapAlgebra函数进行汇总求和, 直接得到最终栅格
函数如下:
数组计算方式:
主要函数:
1, 二维数组转一维数组(在用)
CREATE OR REPLACE FUNCTION unnest_2d_1d(ANYARRAY, OUT a ANYARRAY)
RETURNS SETOF ANYARRAY AS
$func$
BEGIN
FOREACH a SLICE 1 IN ARRAY $1 LOOP
RETURN NEXT;
END LOOP;
END
$func$ LANGUAGE plpgsql IMMUTABLE STRICT;
2, 一维数组转二维数组(未用)
CREATE OR REPLACE FUNCTION

本文介绍了如何在PostGIS中使用自定义函数,通过数组操作和ST_MapAlgebra来实现每小时降雨量的栅格汇总,探讨了两种方法:一是将栅格数据转换为数组求和,二是循环调用ST_MapAlgebra进行逐帧累加。
最低0.47元/天 解锁文章
8万+

被折叠的 条评论
为什么被折叠?



