PostGis 多栅格数据求和函数实现

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

        近期有个需求要计算多幅栅格的总和, 比如: 气象降雨栅格每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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值