欢迎光临
我们一直在努力

服务器安装 LDOPE(MODIS 数据处理工具)

目录

  • 下载方式1-(简单快捷)
    • 根据WRF-VPRM 需要打补丁
    • math_sds.patch 文件详解
  • 下载方式2:(手动安装依赖)
    • 一、安装所需依赖库(4 个主库 + 2 个基础库)
      • 另- HDF-EOS 手动编译
    • 二、解压并安装 LDOPE
  • 参考

下载方式1-(简单快捷)

LDOPE-Land Data Operational Products Evaluation

在这里插入图片描述 1. 下载并解压文件

wget https://lpdaac.usgs.gov/documents/208/LDOPE-1.7-linux-x64-installer.run.zip
unzip LDOPE-1.7-linux-x64-installer.run.zip

2. 给 .run 文件添加执行权限

打开终端,进入该文件所在的目录,然后执行:

chmod +x LDOPE-1.7-linux-x64-installer.run

3. 运行安装程序

继续在终端中执行:

./LDOPE-1.7-linux-x64-installer.run

这将启动图形界面的安装程序(或命令行安装界面,取决于打包方式),你只需按照提示进行安装即可。

在这里插入图片描述 4. 安装完成后设置环境变量(如有必要)

安装完后,通常会提示你软件安装在哪个目录,比如:

/home/yourname/LDOPE/

你可以将其添加到环境变量中,确保可以在任何地方通过命令行调用工具。例如:

export PATH=$PATH:/home/yourname/LDOPE/bin

可以将这行添加到你的 ~/.bashrc 或 ~/.zshrc 文件中,以便每次启动终端时自动生效。

根据WRF-VPRM 需要打补丁

VPRM 预处理器对 LDOPE 的两个源文件做了修改:

  • math_sds.c
  • cp_proj_param.c

VPRM 预处理器的源代码中已经有了对应的补丁文件:

  • math_sds.patch
  • cp_proj_param.patch

它们的作用是将这些修改应用到 LDOPE 的源代码中,然后重新编译 LDOPE。

1. 找到 LDOPE 源代码目录

默认情况下,安装 .run 文件后,LDOPE 会安装在某个目录中,比如:

~/LDOPE/

你需要找到其中包含 math_sds.c 和 cp_proj_param.c 的目录,通常在:

~/LDOPE/src/
$HOME/vprm_project/tools/LDOPE-1.7/src/

2. 将 patch 文件复制到 LDOPE 源代码目录

cp $HOME/vprm_project/WRF-VPRM/*.patch $HOME/vprm_project/tools/LDOPE-1.7/src/
cd $HOME/vprm_project/tools/LDOPE-1.7/src/

3. 应用补丁

在 src/ 目录下执行以下命令:

patch < cp_proj_param.patch
patch < math_sds.patch

如果成功,终端将显示类似:

patching file cp_proj_param.c
patching file math_sds.c

若提示类似 Reversed (or previously applied) patch detected!,说明补丁可能已经应用过,无需重复。

4. 重新编译 LDOPE

通常在源代码目录下有 Makefile,你只需要运行:

make clean
make

如果没有 Makefile,你可能需要手动编译:

gcc -o cp_proj_param cp_proj_param.c
gcc -o math_sds math_sds.c

或者参考源代码中的编译说明(如 README 或 INSTALL 文件)。

math_sds.patch 文件详解

1. 修改命令行帮助信息

找到 math_sds.c 中几段类似下面的:

"-math=<arithmetic expression>,dt,f_nop1,f_nop2,f_nop3,f_ovf \\n"

替换为:

"-math=<arithmetic expression>,dt,f_nop1,f_nop2,f_nop3,f_ovf,scalar1,scalar2,SDS_name_out \\n"

并在说明文字下方 增加:

" scalar1 and scalar2 are scalars for multiplication of SDS1 and \\n"
"SDS2, respectively. Default is 1 (can be invoked by * symbol)\\n"
" \\n"
" SDS_name_out is the name to be given to the output SDS. Default is \\n"
"the SDS1 name (can be invoked by * symbol)\\n"


2. 修改函数参数定义(增加新的参数)

✅ 函数 1:

原来:

int parse_expr(char *dt, char *f_nop1, char *f_nop2, char *f_nop3, char *f_ovf);

改成:

int parse_expr(char *dt, char *f_nop1, char *f_nop2, char *f_nop3, char *f_ovf,
char *scalr1, char *scalr2, char *scalr3, char *sds3);

✅ 函数 2:

int compute_math_sds(..., char *f_nop, char *f_ovf)

改为:

int compute_math_sds(..., char *f_nop, char *f_ovf,
char *scalr1, char *scalr2, char *scalr3, char *sds3)


3. 增加变量定义

在函数中 char sds1[MAX_SDS_NAME_LEN], sds2[MAX_SDS_NAME_LEN]; 之后,加上:

char sds3[MAX_SDS_NAME_LEN];
char scalr1[10], scalr2[10], scalr3[10];


4. 修改参数提取逻辑

找到原来的参数解析循环:

for (i = 0, p1 = 0; i < 9; i++)

改为:

for (i = 0, p1 = 0; i < 13; i++)

并在 switch-case 中添加:

case 9: strmid(expr, p1, nc, f_ovf); break;
case 10: strmid(expr, p1, nc, scalr1); break;
case 11: strmid(expr, p1, nc, scalr2); break;
case 12: strmid(expr, p1, nc, scalr3); break;

最后:

strmid(expr, p1, nc, f_ovf);

改为:

strmid(expr, p1, nc, sds3);


5. 增加默认值处理

if (strcmp(scalr1, "*") == 0) scalr1[0] = '\\0';
if (strcmp(scalr2, "*") == 0) scalr2[0] = '\\0';
if (strcmp(scalr3, "*") == 0) scalr3[0] = '\\0';
if (strcmp(sds3, "*") == 0) sds3[0] = '\\0';


6. 修改输出 SDS 名称设置逻辑

原来:

sprintf(sds3_info->name, "%s%c%s", sds1_info->name, op_t, sds2_info->name);

在这里插入图片描述

改为:

if (sds3[0] == '\\0')
sprintf(sds3_info->name, "%s", sds1_info->name);
else
sprintf(sds3_info->name, "%s", sds3);


7. 最终计算时加入 scalar 运算

加入:

fscalr1 = (scalr1[0] == '\\0') ? 1.0 : atof(scalr1);
fscalr2 = (scalr2[0] == '\\0') ? 1.0 : atof(scalr2);
fscalr3 = (scalr3[0] == '\\0') ? 0.0 : atof(scalr3);

并应用:

dval1 = fscalr1 * dval1;
dval2 = fscalr2 * dval2;
...
dval3 = dval3 + fscalr3;


完成后重新编译

回到 LDOPE 目录:

cd $HOME/vprm_project/tools/LDOPE-1.7
make clean
make

确认 bin/math_sds 被重新生成。


修改完成后,就可以这样使用了:

math_sds -of=output.hdf \\
-math=sds1,input.hdf,+,sds2,input.hdf,INT16,-28672,-28672,-28672,-28672,1,2,100,evi_result

这里 1,2,100,evi_result 分别对应:

  • scalar1 = 1(乘 sds1)
  • scalar2 = 2(乘 sds2)
  • scalar3 = 100(结果加常数)
  • evi_result:输出 SDS 名称 ✅

下载方式2:(手动安装依赖)

官方页面-LDOPE(Land Data Operational Product Evaluation)Tools

在这里插入图片描述

LDOPETools_V3.6.tar.gz

是一个有效的工具包压缩文件,包含了 NASA 提供的 MODIS 和 VIIRS 数据质量评估工具。

一、安装所需依赖库(4 个主库 + 2 个基础库)

1. 所需库列表

库名说明下载地址
HDF4 支持 HDF-EOS2 的底层库 HDF4 下载
HDF-EOS2 基于 HDF4 的 EOS 数据结构支持 HDFEOS2 下载
HDF5 支持 HDF-EOS5 的底层库 HDF5 下载
HDF-EOS5 基于 HDF5 的 EOS 数据结构支持 HDFEOS5 下载
libjpeg JPEG 图像压缩支持库(HDF4 依赖) jpegsrc.v6b.tar.gz
zlib 压缩支持库(HDF4 和 HDF5 依赖) zlib.net

# 安装基础依赖
conda install -c conda-forge libjpeg zlib

# 安装 HDF4 / HDF5
conda install -c conda-forge hdf4 hdf5

# 安装 HDF-EOS2 / HDF-EOS5
conda install -c conda-forge hdfeos2 hdfeos5

source load_vprm_env.sh

echo $HDF_INC
which get_sds_info

ls $CONDA_PREFIX/include/hdf.h # HDF4
ls $CONDA_PREFIX/include/H5public.h # HDF5
ls $CONDA_PREFIX/include/HE2_config.h # HDF-EOS2
ls $CONDA_PREFIX/include/HE5_config.h # HDF-EOS5
ls $CONDA_PREFIX/lib/libjpeg.* # libjpeg
ls $CONDA_PREFIX/lib/libz.* # zlib


2. 目录结构建议

~/vprm_project/
├── tools/
│ ├── hdf4/
│ ├── hdfeos2/
│ ├── hdf5/
│ ├── hdfeos5/
│ ├── jpeg/
│ ├── zlib/
│ └── LDOPEtools_V3.6/


3. 安装步骤(以源码编译方式为主)

Step 1:编译安装 JPEG 和 Zlib(基础库)

安装 libjpeg:

wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
tar -xvzf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure –prefix=$HOME/vprm_project/tools/jpeg
make && make install

安装 zlib:

wget https://zlib.net/zlib.tar.gz
tar -xvzf zlib.tar.gz
cd zlib-*
./configure –prefix=$HOME/vprm_project/tools/zlib
make && make install

# HDFEOS2
./configure –prefix=$HOME/vprm_project/tools/hdfeos2 \\
–with-hdf4=$HOME/vprm_project/tools/hdf4
make && make install

# HDFEOS5
./configure –prefix=$HOME/vprm_project/tools/hdfeos5 \\
–with-hdf5=$HOME/vprm_project/tools/hdf5
make && make install

另- HDF-EOS 手动编译

How to build HDF-EOS 在这里插入图片描述

1、安装并编译 HDF-EOS2

tar -xvzf hdf-eos2-3.0-src.tar.gz
cd hdf-eos2-3.0

# 创建安装目录(可选)
mkdir -p ~/vprm_project/tools/hdfeos2

# 配置,指定 HDF4 路径(这里用 Conda 安装的 HDF4)
./configure \\
–prefix=$HOME/vprm_project/tools/hdfeos2 \\
–with-hdf4=$CONDA_PREFIX \\
CC=${CC:-gcc} \\
CFLAGS="-I$CONDA_PREFIX/include" \\
LDFLAGS="-L$CONDA_PREFIX/lib"

# 编译
make -j$(nproc)

# 安装
make install

ls ~/vprm_project/tools/hdfeos2/include/HE2_config.h
ls ~/vprm_project/tools/hdfeos2/lib/libhe2.*

2、安装并编译 HDF-EOS5

在这里插入图片描述

# 解压源码包
tar -xvzf hdf-eos5-2.0-src.tar.gz
cd hdf-eos5-2.0

# 创建安装目录(可选)
mkdir -p $HOME/vprm_project/tools/hdfeos5

# 配置,指定 HDF5 路径(通过 Conda 安装的 HDF5)
./configure \\
–prefix=$HOME/vprm_project/tools/hdfeos5 \\
–with-hdf5=$CONDA_PREFIX \\
CC=${CC:-gcc} \\
CFLAGS="-I$CONDA_PREFIX/include" \\
LDFLAGS="-L$CONDA_PREFIX/lib"

# 编译
make -j$(nproc)

# 安装
make install

安装完成后验证:

# 头文件
ls $HOME/vprm_project/tools/hdfeos5/include/HE5_config.h

# 库文件
ls $HOME/vprm_project/tools/hdfeos5/lib/libhe5.*

添加环境变量(建议加到 load_vprm_env.sh):

export HDFEOS5_INC=$HOME/vprm_project/tools/hdfeos5/include
export HDFEOS5_LIB=$HOME/vprm_project/tools/hdfeos5/lib

二、解压并安装 LDOPE

以下是标准的安装流程,当前目录为:

$HOME/vprm_project/tools

cd ~/vprm_project/tools

# 解压
tar -xvzf LDOPETools_V3.6.tar.gz

这将解压出类似结构的目录,例如:

LDOPETools_V3.6/
├── bin/
├── include/
├── lib/
├── doc/
└── src/

进入文件地址,并开始安装:

cd $HOME/vprm_project/tools/LDOPE_tools_V3.6/src/
cd ~/vprm_project/tools/LDOPEtools_V3.6/src
make

如果你下载了测试包 LDOPE_tools_V3.6_test_pkg.tar.gz,可以解压并运行测试:

tar -xvzf LDOPE_tools_V3.6_test_pkg.tar.gz
cd LDOPE_tools_V3.6_test_pkg/
less README

which get_sds_info
get_sds_info -h

which cp_proj_param
cp_proj_param -h

参考

赞(0)
未经允许不得转载:171主机测评 » 服务器安装 LDOPE(MODIS 数据处理工具)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址