BandMath¶
输出单频图像,该图像是对多个多波段图像进行数学运算的结果。
描述¶
该应用程序对多个多波段图像执行数学运算,并将结果输出为单波段图像。在每个像素位置计算给定的表达式。数学公式的求值由muParser库完成。
可以使用以下命令来编写公式:
- 数值(2.3、-5、3.1e4、...)
- 包含像素值的变量(例如
im2b3
是第二幅图像中的像素值,第三个频段) - 二元运算符:
+
此外,-
减法,*
乘法,/
分部^
将x乘以y的幂<
少于,>
大于,<=
小于或等于,>=
大于或等于==
平等,!=
不相等||
逻辑或,&&
逻辑与- If-Then-Else运算符:
(condition ? value_true : value_false)
- 功能:
exp()
,log()
,sin()
,cos()
,min()
,max()
..
完整的功能和运算符列表可在muParser网站上找到 [1] 。
参数¶
Input image list -il image1 image2...
Mandatory
Image list of operands to the mathematical expression.
Output Image -out image [dtype]
Mandatory
Output image which is the result of the mathematical expressions on input image list operands.
Expression -exp string
Mandatory
The muParser mathematical expression to apply on input images.
Available RAM (MB) -ram int
Default value: 256
Available memory for processing (in MB).
实例¶
从命令行执行以下操作:
otbcli_BandMath -il verySmallFSATSW_r.tif verySmallFSATSW_nir.tif verySmallFSATSW.tif -out apTvUtBandMathOutput.tif -exp "cos( im1b1 ) > cos( im2b1 ) ? im3b1 : im3b2"
来自Python的评论:
import otbApplication
app = otbApplication.Registry.CreateApplication("BandMath")
app.SetParameterStringList("il", ['verySmallFSATSW_r.tif', 'verySmallFSATSW_nir.tif', 'verySmallFSATSW.tif'])
app.SetParameterString("out", "apTvUtBandMathOutput.tif")
app.SetParameterString("exp", "cos( im1b1 ) > cos( im2b1 ) ? im3b1 : im3b2")
app.ExecuteAndWriteOutput()