当前位置: 首页 > news >正文

【Python库包】ESMF 库包介绍及安装

目录

  • ESMF(Earth System Modeling Framework)库包介绍
    • Regridding(重网格化)
  • ESMF 下载及安装
    • ESMPy: ESMF Python Regridding Interface
    • xESMF安装
    • ESMPy 安装
  • ESMF 库包安装实例
    • Linux 系统安装 ESMF 库包
    • Windows 系统安装 ESMF 库包
  • 参考

ESMF(Earth System Modeling Framework)库包介绍

Regridding(重网格化)

ESMF-Regridding

根据 Earth System Modeling Framework(ESMF)Regridding 页面,Regridding(重网格化),也叫 remapping(重映射)interpolation(插值),是将数据从一个网格转换到另一个网格的过程,同时尽可能保持原始数据的重要特性。

Regridding 是在不同网格之间转换数据的过程,常见于地球系统模型组件之间(如陆地和大气之间)或在数据集之间(例如用于可视化)。其核心目标是:

  • 让数据在网格之间传输时尽量保持 物理一致性
  • 实现 空间分辨率转换(粗到细或细到粗)
  • 支持不同的 网格结构和坐标系统

Regridding 的两个阶段

  1. 生成插值权重矩阵(Interpolation Weight Matrix)
    描述源网格(source grid)上的点如何贡献给目标网格(destination grid)上的点。

  2. 应用插值权重
    将源网格上的数据乘以权重矩阵,得到目标网格上的数据。这个过程使用并行稀疏矩阵乘法完成。


使用方式

ESMF 提供了多种使用方式:

  • Fortran(集成/在线重网格):可直接在 Fortran 代码中调用,实现模型组件间的自动重网格;
  • 命令行工具
    • ESMF_RegridWeightGen:生成插值权重;
    • ESMF_Regrid:生成并应用插值权重;
  • Python(通过 ESMPy):Python 脚本中使用 ESMPy 接口进行重网格操作。

坐标系统(Coordinate Systems)

  • Cartesian(笛卡尔):主要用于区域性的小网格,坐标单位为距离(x, y)。
  • Spherical(球面):地球标准表示法,使用经纬度(longitude, latitude)。

网格类型(Grid Types)

  • Grid(结构化网格)
    • 2D:四边形构成;
    • 3D:六面体构成;
  • Mesh(非结构化网格)
    • 2D:任意边数的多边形;
    • 3D:六面体或四面体;
  • LocStream(位置流)
    • 一组无连接的离散点(例如观测点),不能用于所有重网格方法。

Regridding 方法

方法描述
Bilinear两维或三维线性插值
Patch(高阶)基于最小二乘拟合的高阶方法
Nearest source to destination每个目标点对应最近的源点
Nearest destination to source每个源点对应最近的目标点
First-order conservative保守数据总量,基于面积重叠比计算权重
Second-order conservative同上,但考虑源网格内梯度,插值更平滑

在这里插入图片描述


支持的网格文件格式

  • CF Tile
  • ESMF Mesh
  • GRIDSPEC Mosaic
  • SCRIP
  • UGRID

极点处理选项(Poles)

  • Full circle average:使用极点周围所有纬度点平均;
  • N-point average:自定义使用 n 个点;
  • No pole:不使用极点值。

ESMF 下载及安装

ESMF-Download

在这里插入图片描述

ESMPy: ESMF Python Regridding Interface

ESMPy 是基于 ESMF 的 Python 接口,因此 ESMF 是其运行的核心依赖组件。

ESMPy: ESMF Python Regridding Interface

在这里插入图片描述

为什么需要安装 ESMF?

  • ESMPy 依赖于 已编译的 ESMF 库
  • 安装 ESMPy 时,Python 会调用 ESMF 提供的构建文件(即 esmf.mk),因此该文件的路径必须通过环境变量 ESMFMKFILE 正确设置。
  • 没有 ESMF,ESMPy 将无法正常使用或编译。

xESMF安装

xESMF Installation

在这里插入图片描述

$ conda create -n xesmf_env
$ conda activate xesmf_env
$ conda install -c conda-forge xesmf
# to support all features in xESMF
$ conda install -c conda-forge dask netCDF4# optional dependencies for executing all notebook examples
$ conda install -c conda-forge matplotlib cartopy jupyterlab
$ conda install -c conda-forge esmpy xarray numpy shapely cf_xarray sparse numba
$ pip install git+https://github.com/pangeo-data/xesmf.git

ESMPy 安装

在这里插入图片描述

ESMF 库包安装实例

ESMF 并不是可以直接通过 pip 安装的 Python 包,它是一个 C/C++/Fortran 编写的框架,因此必须手动编译或通过包管理器获取。以下是通用安装步骤:

Linux 系统安装 ESMF 库包

1. 克隆 ESMF 源码(从 GitHub)

git clone https://github.com/esmf-org/esmf.git
cd esmf

您也可以从 官方 ESMF 发布页面 下载指定版本的源码包。

2. 配置环境变量(可选,但推荐)

设置安装路径:

export ESMF_DIR=$(pwd)
export ESMF_INSTALL_PREFIX=$ESMF_DIR/install

选择编译配置(以下是一个示例配置):

export ESMF_COMM=openmpi  # 或 mpich,具体取决于您的MPI库
export ESMF_COMPILER=gfortran
export ESMF_BOPT=O         # 优化编译(O - optimized, g - debug)
export ESMF_PIO=ON         # 如果需要 PIO(并行IO)
export ESMF_NETCDF=ON      # 如果需要 NetCDF 支持(通常需要)

3. 编译 ESMF

make

这个过程可能需要几分钟时间,视系统性能和配置而定。

4. 安装 ESMF

make install

这会将构建好的库文件安装到 $ESMF_INSTALL_PREFIX 指定的路径。

5. 设置 ESMFMKFILE 环境变量

这是 ESMPy 能发现 ESMF 的关键步骤。

找到 esmf.mk 文件的位置,通常在以下路径:

$ESMF_INSTALL_PREFIX/lib/libO/<平台名>/esmf.mk

然后设置环境变量。例如:

export ESMFMKFILE=$ESMF_INSTALL_PREFIX/lib/libO/Darwin.gfortranclang.64.openmpi.default/esmf.mk

根据您的平台(Linux、macOS)和使用的编译器(gfortran、intel)替换路径中的内容。

检查是否成功

确保以下命令成功输出:

echo $ESMFMKFILE
cat $ESMFMKFILE | grep ESMF_VERSION_STRING

您应该能看到类似:

ESMF_VERSION_STRING = 9.0.0

Windows 系统安装 ESMF 库包

参考

1、CSDN 博客-Python解决import xesmf报错没有名为ESMF的包
在这里插入图片描述

http://www.dtcms.com/a/495521.html

相关文章:

  • HarmonyOS ArkUI框架自定义弹窗选型与开发实战
  • 智能体开发(2)智能数据处理Agent
  • Visual Studio在一个解决方案管理多项目属性
  • 网站图片防盗连怎么做韶关营销网站开发
  • 10.17 设置组件导航和页面路由
  • 福田做商城网站建设找哪家公司比较安全简约好看的网站模板免费下载
  • 【GD32F527_EVAL】USB 驱动移植 和 USB CDC Device 接入PC实验
  • 网站开发网站定制查看网站源代码建站可以
  • stm32_QT6怎么打包
  • c 做网站流程如何做做网站
  • 深度剖析大模型Function Calling:从原理到优化策略
  • SQL入门:表关联-从基础到优化实战
  • YOLOv3 技术总结
  • 为什么有些前端开发者能快速交付,有些还在纠结架构设计
  • Calibre(开源电子书管理软件) v8.13.0 官方便携版
  • wordpress数据库端口娄底seo排名
  • 途牛旅游网站建设方案临安区做网站的公司
  • 【原理扫描】SSL/TLS 服务器瞬时 Difie-Hellman 公共密钥过弱
  • Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
  • QML学习笔记(四十)QML的FileDialog和FolderDialog
  • 泉州做网站设计歌词插件wordpress
  • NLP意图识别
  • 智能科技 光速东莞网站建设番禺制作网站企业
  • 李宏毅机器学习笔记25
  • 大连模板建站哪家好网站如何加入百度联盟
  • 当大模型遇上 HTTP:一次“无状态”的相似性思考
  • 衡阳网站设计ss0734如何做公司官网
  • asp网站做文件共享上传手机个别网页打不开
  • 做网站图网页搭建环境
  • 山西 网站制作wifi扩展器做网站