Kettle

kettle提取postgresql数据

2019-01-08  本文已影响0人  reco171

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数据转换
上一篇下一篇

猜你喜欢

热点阅读