FME中的栅格数据操作之八——转换器RasterExpressionEvaluator的用法(三)

原文发布时间:2010-04-26

作者:毛毛虫

下面继续说一下转换器RasterExpressionEvaluator的用法。

下面讲一下设置条件的语法和应用:

条件语句if,例如if (A[0]>15, 100, 255),表示如果输入波段A[0]大于15,输出波段A[0]的值为100,否则为255。

示例一:颜色分类

使用可以对比单元格的简单条件来对颜色分类。如下图(google map):找出所有绿色单元格表示公园。


根据对数据的分析知道,满足绿色显示的条件是绿色波段与红色波段和蓝色波段的值大(这里设置为大于15)满足这个条件的单元格值为100,否则为255。条件语句为:if (A[1]-A[0]>15 && A[1]-A[2]>15, 100, 255),设置如图:

 根据对数据的分析知道,满足绿色显示的条件是绿色波段与红色波段和蓝色波段的值大(这里设置为大于15)满足这个条件的单元格值为100,否则为255。条件语句为:if (A[1]-A[0]>15 && A[1]-A[2]>15, 100, 255),设置如图:



示例二:道路中心线提取

在转换器RasterExpressionEvaluator的用法(二)中提到道路中心线提取的例子,现在用RasterExpressionEvaluator转换器方法来处理,也跟上面的方法对比一下。原图(google map,png格式):


从前面的分析我们已经知道,白色道路的R、G和B相当接近,黄色道路的G波段很接近R波段,而蓝色波段要明显的小于B波段,根据这些条件来设置RasterExpressionEvaluator的条件语句:

if ((abs(A[0]-A[1])<=3 && abs(A[0]-A[2])<=3) || (abs(A[0]-A[1])<=4 && abs(A[0]-A[2])>10) , 0, 255)

也就是说,如果是灰色或黄色道路,波段赋值为0(黑色),否则为255(白色)。

转换后:


使用转换器RasterBandNodataSetter设置nodata值为255后,就可以利用RasterBandNodataSetter转换器来根据nodata值提取矢量多边形,转换的结果如下:


 下面的处理过程(去除小多边形,平滑多边形等)与原来的处理过程相同。分别执行下两种方法,会发现第二种方法比第一种方法处理速度快的多。

 

示例三:变化监测

检查更新的影像的单元格的值是否与原始影像相同。

原始图像:1.png和2.png



 把包含数据的单元格设置为200,转换器设置如下:


输出图的效果如下:


设置RasterExpressionEvaluator转换器(在A、B端口输入的影像的不重叠且A波段不为白色的部分设置为黑色,重叠部分保持原来的A的波段颜色)


从图中可以看到显示了两幅影像的所有波段部位255的部分,重叠部分黑色显示(黑色部分表示第二副比第一幅增加的部分):


设置RasterExpressionEvaluator转换器(在A、B端口输入的影像的不重叠且B波段不为白色的部分设置为黑色,重叠部分保持原来的A的波段颜色)


 从图中可以看到显示了两幅影像的所有波段部位255的部分,重叠部分黑色显示(黑色部分表示第二副比第一幅增加的部分):


使用两次RasterInterpretationCoercer生成两个波段GREEN8和BLUE8

RasterBandCombiner组合这两个波段

使用RasterBandAdder添加一个RED8波段

最后使用RasterExpressionEvaluator重新排列波段


最后转换的结果图为:


经过上述步骤,就把两幅影像相同的部分、第二幅比第一份增加的部分、第二副比第二幅缺少的部分都表示出来了。

 

示例四:添加数据

当一个栅格提供一个特定层的信息,可以跟另一个栅格组合。本例中有两个栅格数据:一个是道路网(包含标注),如图(google map地图,png格式):


 另一个栅格作为背景。


 栅格地图中的,道路的相关单元格的分类应该考虑主要路线(黄色),标准道路(白色),各种道路的标注(有不同的颜色),如果单元格满足条件,我们可以从道路中提取,否则我们使用背景栅格。

在前面道路提取中,我们提到,白色道路的R、G和B相当接近,黄色道路的G波段很接近R波段,而蓝色波段要明显的小于B波段。在机场道路的注记栅格单元的特征是,如果绿色的值非常暗(小于100),那么在绿色和红色之间的不同应该大于6,否则大于20,基于这些条件提取道路和注记的条件语句为:

if((B[0]==B[1] && B[0]==B[2]) || (abs(B[0]-B[1])<=5 && (B[0]-B[2]>6 && B[0]<100) || (B[0]-B[2]>20 && B[0]>100)), B[0], A[0]);if((B[0]==B[1] && B[0]==B[2]) || (abs(B[0]-B[1])<=5 && (B[0]-B[2]>6 && B[0]<100) || (B[0]-B[2]>20 && B[0]>100)), B[1], A[1]);if((B[0]==B[1] && B[0]==B[2]) || (abs(B[0]-B[1])<=5 && (B[0]-B[2]>6 && B[0]<100) || (B[0]-B[2]>20 && B[0]>100)), B[2], A[2])

设置RasterExpressionEvaluator为:


 转换后的图为:


 部分放大后(由于两幅图的配准和影像的倾斜问题,可能没有完全重叠):












  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值