有没有办法计算和保存一个新变量,该变量是多个 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.nc
、V2.nc
、V3.nc
、V4.nc
、V5.nc
)和一个统计模型:y = 1 / (1 + exp(-(Intercept + V1 * 1.87 + V2 * 1.53 + V3 * (-4.18) + V4 * 3.58 + V5 * 9.13)))
.
我通常使用Qgis
、RStudio
和Ubuntu
,我不关心使用哪个程序。
有没有办法让我使用这些文件来计算整体 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 适当地更改元数据,这始终是一个好习惯,即使这些文件仅供您自己使用...
我有多个 .nc
,它们也在 .tif
文件中,我想用它们来计算基于统计模型的概率。我有 5 个文件(V1.nc
、V2.nc
、V3.nc
、V4.nc
、V5.nc
)和一个统计模型:y = 1 / (1 + exp(-(Intercept + V1 * 1.87 + V2 * 1.53 + V3 * (-4.18) + V4 * 3.58 + V5 * 9.13)))
.
我通常使用Qgis
、RStudio
和Ubuntu
,我不关心使用哪个程序。
有没有办法让我使用这些文件来计算整体 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 适当地更改元数据,这始终是一个好习惯,即使这些文件仅供您自己使用...