kettle提取postgresql数据步骤如下
1 遍历区域和像素
select x.gid, t.categorynum, t.categorynum, x.gid
FROM xingzheng x,thematic t
其中xingzheng是行政区域数据表,thematic是专题像素分类表
2 影像分割
通过查询某个区域和影像的交,达到影像分割的目的,
查询区域gid=24,波段为1,像素值为4的像素个数的sql语句为:
SELECT ST_ValueCount(rast,1,4) As count
FROM sjy
WHERE ST_Intersects(rast,(select geom from xingzheng where gid=24));
其中函数ST_Intersects查询两个几何的交集,示例如下
SELECT ST_Intersects('POINT(0 0)'::geometry, 'LINESTRING ( 2 0, 0 2 )'::geometry);
3 栅格统计与数据提取
通过提取函数ST_ValueCount,查询分割后的栅格、指定波段和像素的像素总个数,并乘以单个像元值大小,实现数据面积提取。
-- 面积
SELECT sum(ST_ValueCount(rast,1,4)) * 28.15132773 * 28.15132773*0.000001 As count
FROM sjy
WHERE ST_Intersects(rast,(select geom from xingzheng where gid = 24));
其中28.15132773 * 28.15132773为单个像元值面积大小,具体使用albers投影(双标准纬线投影)计算得出,0.000001单位换算成平方公里。
区域gid和像素类型作为输入,实现影像分割和栅格面积统计,完整的sql如下:
SELECT ? gid, ? categorynum, sum(ST_ValueCount(rast,1,?)) * 28.15132773 * 28.15132773*0.000001 As count
FROM sjy s, xingzheng x
WHERE x.gid = ? and ST_Intersects(rast,x.geom);
4 kettle数据提取转换
kettle数据提取转换过程如下:
kettle遍历区域和像素,如kettle数据转换图所示“表输入2”,sql见步骤1;
kettle影像分割和栅格统计,如kettle数据转换图所示“表输入”,sql见步骤3;
将提取出的数据保存到文件中。
kettle数据转换
网友评论