有没有办法计算和保存一个新变量,该变量是多个 netCDF 或 tif 文件的函数?

Is there a way to calculate and save a new variable that is a function of multiple netCDF or tif files?

我有多个 .nc,它们也在 .tif 文件中,我想用它们来计算基于统计模型的概率。我有 5 个文件(V1.ncV2.ncV3.ncV4.ncV5.nc)和一个统计模型:y = 1 / (1 + exp(-(Intercept + V1 * 1.87 + V2 * 1.53 + V3 * (-4.18) + V4 * 3.58 + V5 * 9.13))).

我通常使用QgisRStudioUbuntu,我不关心使用哪个程序。

有没有办法让我使用这些文件来计算整体 y

您可以尝试使用

将文件合并为一个文件
cdo cat V?.nc combined.nc 

然后使用表达式命令创建一个新变量

intercept=2.3123 # or whatever the value is 
cdo expr,'y=1 / (1 + exp(-(${intercept} + V1 * 1.87 + V2 * 1.53 - 4.18*V3 + V4 * 3.58 + V5 * 9.13)))' combined.nc newvar.nc

我假设 V1.nc 中的变量称为“V1”等,如果没有相应地替换名称。

EDIT:根据注释,每个文件都使用相同的变量名。因此,要么在上述之前使用 NCO 在每个文件中重命名变量,要么可以使用单独的 cdo 函数组合原始文件,如下所示:

cdo -pow,-1 -addc,1 -exp -mulc,-1 -addc,$intercept -add -mulc,1.87 V1.nc -add -mulc,1.53 V2.nc -add -mulc,-4.18 V4.nc -add -mulc,3.58 V4.nc -mulc,9.13 V5.nc mynewvariable.nc 

我用管道将它放在一条线上并避免了中间文件,仔细检查我的等式但我希望它没有错误。使用管道有助于从右到左阅读。

文件mynewvariable.nc中的变量也将被称为Band1;您可能想使用 nco 适当地更改元数据,这始终是一个好习惯,即使这些文件仅供您自己使用...