美文网首页Kettle
kettle提取postgresql数据

kettle提取postgresql数据

作者: reco171 | 来源:发表于2019-01-08 11:03 被阅读0次

    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数据转换

    相关文章

      网友评论

        本文标题:kettle提取postgresql数据

        本文链接:https://www.haomeiwen.com/subject/jocvrqtx.html