PostGIS数据库中栅格影像的分类提取方法

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

You may also like...