1.内容介绍
基于已经分类的影像数据,利用postgis提取不同类别的像素值个数,并通过albers等面积投影,计算像素值面积。实现影像数据不同类别要素的面积统计分析。
2.ST_ValueCount提取函数
该函数返回一个记录集,包括像素值和指定栅格(或栅格覆盖)的指定波段的像素值在一个值集合内的像素个数。如果没有指定波段,那么默认是波段1。默认也不统计值为NODATA的像素。像素值如果不是整数,那么像素值会进行round四舍五入处理得到一个最接近的整数值。
具体应用如下:
-- 查询指定范围内栅格,指定波段,指定像素值的数量
SELECT rid, ST_ValueCount(rast,2,100) As count
FROM test
WHERE ST_Intersects(rast,
ST_GeomFromText(’POLYGON((224486 892151,224486 892200,224706 892200,224706
892151,224486 892151))’,26986)
);
3.PostGIS存储过程
具体存储过程如下所示:
--提取存储过程
CREATE OR REPLACE FUNCTION sjycount2(band int, pixValue int, region varchar)
returns setof record as
$BODY$
DECLARE
rd RECORD;
asql varchar;
BEGIN
asql = 'SELECT sum(ST_ValueCount(rast,'''|| band ||''','''|| pixValue ||''')) As count FROM test WHERE ST_Intersects(rast,(select geom from xingzheng where name = '''|| region ||'''));';
EXECUTE asql;
return;
END;
$BODY$ LANGUAGE plpgsql VOLATILE
网友评论