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

目录

  • 下载方式1-(简单快捷)
    • 根据WRF-VPRM 需要打补丁
  • 下载方式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.ccp_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

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

下载方式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 下载
libjpegJPEG 图像压缩支持库(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.shecho $HDF_INC
which get_sds_infols $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 -hwhich cp_proj_param
cp_proj_param -h

参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98802.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

克隆代币 + 捆绑开盘:多链环境下的低成本发币玩法

在加密世界&#xff0c;发币已经不再是“少数开发者的专利”。随着工具的普及&#xff0c;任何人都可以快速发行一个在加密世界&#xff0c;发币已经不再是“少数开发者的专利”。随着工具的普及&#xff0c;任何人都可以快速发行一个代币。但问题是&#xff1a;如何在保证低成…

数据结构中的 二叉树

1.前言 在 Java 中&#xff0c;树&#xff08;Tree&#xff09;是一种非线性数据结构&#xff0c;由节点&#xff08;Node&#xff09;组成&#xff0c;常见的线性表则是我们之前学过的顺序表、链表、栈、队列等等。每个节点包含数据和指向子节点的引用。树的常见实现方式包括二…

IntelliJ IDEA 启动项目时配置端口指南

&#x1f31f; 一、为什么需要手动设置启动端口&#xff1f; 默认情况下&#xff0c;Spring Boot 应用会使用 8080 端口启动。但在以下场景中&#xff0c;我们必须自定义端口&#xff1a; 多个微服务同时运行&#xff0c;需避免端口冲突&#xff1b;团队协作开发&#xff0c;统…

spark sql之from_json函数

目录前言函数语法参数说明返回值案例案例1案例2前言 在Spark SQL中&#xff0c;from_json函数用于解析包含JSON字符串的列&#xff0c;并将其转换为Spark SQL的结构化类型&#xff08;如struct、map或array&#xff09; 函数语法 from_json(jsonStr, schema [, options])参数…

数据结构 之 【位图的简介】

目录 1.位图的引入 2.位图概念 3.位图的实现 3.1前提准备 3.2set 3.3reset 3.4test 4.位图的应用 1.位图的引入 给40亿个不重复的无符号整数&#xff0c;没排过序 再给一个无符号整数&#xff0c;如何快速判断这个无符号整数是否在 这40亿个数中 首先&#xff0c;一个…

[iOS] ViewController 的生命周期

文章目录前言一、UIViewController 生命周期有关函数二、UIViewController 中函数的执行顺序运行结果1.present和dismiss2.push和pop三、总结前言 UIViewController 是在 iOS 开发中一个非常重要的角色&#xff0c;他是 view 和 model 的桥梁&#xff0c;通过 UIViewControlle…

第30章 零售与电商AI应用

本章将深入探讨人工智能在零售与电商领域的革命性应用。我们将从智能推荐系统、动态定价、库存管理到创新的虚拟试衣间&#xff0c;全面解析AI如何重塑购物体验和商业运营效率&#xff0c;并为每个关键技术点提供代码实战&#xff0c;帮助你掌握将AI应用于真实商业场景的能力。…

QT通过QModbusRtuSerialMaster读写电子秤数据实例

一、电子称常用功能&#xff1a;称重、清零、去皮&#xff1b;电子秤的通讯方式&#xff1a;Modbus通信、串口通信。二、QT读写电子秤软件界面如下&#xff1a;三、核心代码如下&#xff1a;.pro项目文件代码&#xff1a;QT core gui serialbus serialport.h头文件代码#…

sqlmap常用命令

ZZHow(ZZHow1024) 一、扫描注入点 1.GET方法&#xff0c;给URL&#xff1a; #探测该url是否存在漏洞 python sqlmap.py -u "http://192.168.10.1/sqli/Less-1/?id1"#如果我们已经知道admin这里是注入点的话&#xff0c;可以在其后面加个*来让sqlmap对其注入 python …

JVM如何排查OOM

当JVM&#xff08;Java虚拟机&#xff09;出现OOM&#xff08;OutOfMemoryError&#xff09;时&#xff0c;可以按照以下步骤和方法&#xff0c;用于帮助定位和解决JVM中的OOM问题1.查看异常堆栈信息查看异常堆栈信息&#xff08;StackTrace&#xff09;是定位问题的关键。OOM异…

存算一体芯片生态评估:从三星PIM到知存科技WTM2101

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;注册即送-H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 引言&#xff1a;存算一体技术的崛起与意义 在传统冯诺…

[数据结构] 栈 · Stack

一.栈 stack 1.概念 栈 : 一种特殊的线性表 , 其只允许再固定的一段进行插入和删除元素操作 进行数据插入和删除操作的一段称为 栈顶 ; 另一端称为栈底栈中的数据元素遵循 先进后出 原则(LIFO)压栈 : 栈的插入操作叫做 进栈 或 压栈 或 入栈 , 入数据在栈顶出栈 : 栈的删除…

MySQL执行过程中如何选择最佳的执行路径

本篇文章介绍一个非常核心的数据库问题。MySQL 选择最佳执行路径&#xff08;即“查询优化”&#xff09;的过程是由其查询优化器&#xff08;Query Optimizer&#xff09; 完成的。 简单来说&#xff0c;优化器的目标是&#xff1a;在多种可能的执行方案中&#xff0c;选择一个…

【设计模式】从游戏角度开始了解设计模式 --- 抽象工厂模式

永远记住&#xff0c;你的存在是有意义的&#xff0c; 你很重要&#xff0c; 你是被爱着的&#xff0c; 而且你为这个世界带来了无可取代的东西。 -- 麦克西 《男孩、鼹鼠、狐狸和马》-- 从零开始了解设计模式抽象工厂模式抽象工厂模式 今天我们一起来探究抽象工厂模式&#x…

tensorflow.js 使用场景

TensorFlow.js (简称 TF.js) 是一个利用 WebGL 和 Node.js 在浏览器和服务器端进行机器学习模型训练和部署(推理)的 JavaScript 库。它的核心价值在于将机器学习的能力带入了 Web 开发者和 JavaScript 生态的领域。 其主要应用场景可以分为以下几大类: 一、在浏览器中直接进…

详解mcp以及agen架构设计与实现

文章目录1.MCP概念2.MCP服务端主要能力3.MCP技术生态4.MCP与Function call区别5.MCP生命周期6.MCP java SDK7.MCP应用场景8.基于springAIollma阿里qianwenmcp设计私有AIAgent应用实现9.AI java项目落地技术选型10.构建AI Agent四大模块11.LLM(大模型)与MCP之间关系12.A2A、MCP、…

六级第一关——下楼梯

上目录&#xff1a; 目录 题目描述 输入格式 输出格式 输入输出样例 说明/提示 一、DP的意义以及线性动规简介 在一个困难的嵌套决策链中&#xff0c;决策出最优解。 二、动态规划性质浅谈 三、子序列问题 &#xff08;一&#xff09;一个序列中的最长上升子序列&am…

【Linux基础】Linux系统配置IP详解:从入门到精通

目录 1 Linux网络配置概述 2 网卡配置文件位置和命名规则 2.1 配置文件位置 2.2 网卡命名规则 2.3 配置文件命名示例 3 网卡配置文件详解 3.1 主要参数说明 4 Linux系统配置IP步骤 4.1 DHCP动态配置 4.2 静态IP配置 5 Linux网络配置流程 5.1 网络配置流程 5.2 网卡…

C语言sprintf的高效替代方案

C语言的sprintf和snprintf将变量格式化输出到内存buffer&#xff0c;其功能强大&#xff0c;用起来很方便。但sprintf系列函数的运行效率低下&#xff0c;主要包括四方面的原因&#xff1a;格式字符串解析、变参处理、locale&#xff08;本地化&#xff09;支持和通用&#xff…

【知识堂】制造业与物流数字化全景图:系统缩写大全与专业名词速查手册

前言在制造业和物流行业的数字化转型过程中&#xff0c;我们经常会接触到大量的 系统缩写&#xff08;如 ERP、MES、WMS…&#xff09;和 专业名词&#xff08;如 AGV、BOM、LOT…&#xff09;。 这些缩写往往让刚入行的人“一头雾水”&#xff0c;即使是有经验的从业者&#x…