span8
span4
下面是改变了所有黑色值白色外的周边面具的例子。但是,如果你比较输入和输出数据,它不会改变蓝色的值。因此,只有0,0,0设置为白色,并0,0,255是保持原样。
我发现2种方法来做到这一点。
一调色板方法:
要做到这一点,我使用的调色板,而不是乐队,因为这是我知道,我们可以使用RasterCellValueReplacer选择只有黑色和排除其他细胞与一些0,但不是所有的唯一途径。首先,我RGB颜色带化数据转换为与RasterPaletteGenerator调色板。然后我改变基于用于黑色的调色板或颜色的查找值,单元格的值而不是用于频带值= 0。在这种情况下,黑色(0,0,0)由2代表和白色由255所代表的,所以我们用255取代所有2分的。这只会工作,如果我们使用相同的调色板,因为不同的调色板将可能有黑色不同的值。
它可以生成颜色查找表的典型形象,然后利用它来进行与PaletteAdder,而不是我在这里使用了PaletteGenerator所有数据。通过仅应用该带调色板于周边带转换外,
我们尽量减少周边内的数据更改。
要只外周边应用此,我用的是周边的多边形来创建一个周长面具。我用限幅合约多边形切割在1's.Because我的网格的孔使用来自ClippedInside而非ClippedOutside输出,0的掩模施加到多边形的数据外,而不是在它的数据。所以,你得到一个网格1周的周界内和0它ClippedInside之外。我用这个选择我要保持原样,内部的数据。然后我用ClippedOutside格选择外网格,我已经改变巴尔克白色。然后,我添加了2个格结果放在一起结合起来,所以我得到的周界内保存的值,而黑白色之外的周边。至关重要的是,克利伯设置为保护者Clippee范围,使下游的栅格计算将工作,因为这些要求大小均匀。
二RasterExpressionEvaluator方法
另外,更有效的方式来改变0,0,0至255,255,255不改变像0,0,255值。
您只需要一个RasterExpressionEvaluator,它的表达式设置为:
如果((A[0]+A[1]+A[2])=0,255,A[0]);如果((A[0]+A[1]+A[2])=0,255,A[1]);如果((A[0]+A[1]+A[2])=0,255,A[2])
粗略翻译,这意味着如果R+G+B=0,则将单元格设置为255,否则保持原样。
您也可以很容易地使用这个表达式将任意颜色a、b、c更改为另一个任意颜色x、y、z。
这看起来像:
如果((A[0]==A&&A[1]==b&&A[2]==c),x,A[0]);如果((A[0]==A&&A[1]==b&&A[2]==c)、y、A[1]);如果((A[0]==A&&A[1]==b&&A[2]==c)、z、A[2])
您甚至可以制作一个自定义转换程序来执行此操作,因为您可以使用语法a:attribute_name将用户定义的属性值插入到表达式中。
另外,请注意,因为不需要进行调色板转换,所以不会得到任何数据更改。使用上面的调色板方法,255255255实际上变成了253253253。你也不必担心将相同的调色板应用到每个传入的平铺,如果颜色不匹配,可能会导致问题。
有关此功能强大的转换器的详细信息,请参阅fmepedia上的RasterExpressionEvaluator:
http://www.fmepedia.com/index.php/RasterExpressionEvaluator“条件”示例
©2019安全亚搏在线软件公司|法律