更改 netCDF 文件的网格大小

2023-12-21

假设我有 2 个 netCDF 数据文件,其中包含同一区域(如南美洲、非洲等)的数据,但网格大小不同,另一个网格大小为 0.5 度 x 0.5 度,另一个网格大小为 1.0 度 x 1.0 度。 我想将其网格大小增加或减少到不同的值,例如 0.25 x 0.25 或 1.0 x 1.0,以便我可以轻松地使用它进行栅格计算和比较等。

有没有一种方法可以使用 bash 脚本、CDO 等来执行此操作?

可以从此处下载示例数据。https://www.dropbox.com/sh/0vdfn20p355st3i/AABKYO4do_raGHC34VnsXGPqa?dl https://www.dropbox.com/sh/0vdfn20p355st3i/AABKYO4do_raGHC34VnsXGPqa?dl

是否可以采用不同的方法,例如双线性插值或三次插值? 这对于 ArcGIS 和其他软件来说非常容易,但是有没有办法对具有大型数据集的大型 netCDF 文件执行此操作。 假设这只是数据的一个子集。我稍后要转换的是一整套年度数据。

生成的文件应该是一个 .nc 文件,其网格大小已更改(由用户定义)。


您可以使用 cdo 重新映射网格,例如对于常规的 1 度网格,您可以使用:

cdo remapcon,r360x180 input.nc output.nc

除了保守的一阶重映射(remapcon)之外,其他选项还有:

remapbil : bilinear interpolation
remapnn  : nearest neighbour interpolation
remapcon2 : 2nd order conservative remapping

如果您愿意,还可以将一个文件重新映射到另一个文件中使用的网格:

cdo remapcon,my_target_file.nc in.nc out.nc 

编辑 2021:新视频可用...

要回答下面询问使用哪种方法的评论,有关这些插值方法的完整指南以及粗粒度数据时必须注意的有关子采样的问题,你可以参考我在 youtube 上的“重新网格化和插值”视频指南。 https://youtu.be/79o6DXr_3zM

一般来说,如果您从高分辨率插值到低分辨率(“粗网格”)超过 2 倍,则don't想要使用双线性插值,因为它本质上会对字段进行二次采样。这对于非平滑、高度异质的场(例如降水)来说尤其成问题。在这些情况下,我总是建议使用保守方法(remapcon 或 remapcon2)。有关详细信息,请参阅我的视频指南。

另一个提高速度的技巧是,如果您对许多输入文件执行相同的插值过程具有相同的分辨率,然后您可以使用 genbil、gencon 等计算插值权重一次,然后使用文件循环中的权重执行重新映射函数。这要快得多,因为权重的生成是 remapcon 的缓慢部分

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 netCDF 文件的网格大小 的相关文章

  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 使用 matplotlib 绘制简单的 3d numpy 数组

    我想绘制三维 ODE 系统的数值方法的结果 我的输出采用以下形式 假设我们已经计算了三个步骤 import numpy as np v np array 1 2 3 4 5 6 7 8 9 其中每个三元组中的第一个值是 x 坐标 第二个是
  • 拖动数据获取信号发射两次 python gtk3

    我希望源也是目的地 我实现了下面的信号 但拖动数据获取信号触发了两次 第二次 数据变量 在 on drag data get 中 被自动选择的 ListStore 项填充 class DragSource Gtk TreeView def
  • Selenium driver.page_source() 仅提取部分 HTML DOM

    我有一个网页 当我右键单击它然后查看页面源时 我得到 SECTION A 但是当我点击它然后检查时 我得到了更长的输出 我尝试使用 JS 获取页面源 但同样的问题 我得到了输出SECTION A 我怎样才能解决这个问题 注意 我正在寻找通用
  • 用等号完成命令选项

    我正在尝试为可能需要表单上的长选项的命令编写一个 Bash 完成脚本 option or param value 如果用户已经在命令行上输入了一个选项 则该选项应从完成列表中排除 假设仅在命令行上指定一次给定选项才有意义 这是第一次尝试 m
  • pyqt4窗口调整大小事件

    我正在使用 python3 和 pyqt4 我希望每次运行时都会运行一些代码QMainWindow已调整大小 我想要这样的东西 self window resized connect self resize but resized不是内置函
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • 测试从常规函数调用 python 协程(async def)

    假设我有一些异步协程 它可以获取一些数据并返回它 像这样 async def fetch data args result await some io return result 基本上 这个协程是从协程链中调用的 初始协程是通过创建任务来
  • Django 多个外键,相同的相关名称

    我想创建一个模型 1 其中具有相同其他模型 2 的多个外键 我希望这些外键具有相同的related name因为每个外键将指向 model 2 的不同实例 因为我需要所有外键的一个反向关系 也许一个例子会更明确 class Parent M
  • 返回表情符号名称而不是表情符号

    我有这个 1 不带单引号 在 Python 3 中 即 one 有没有一种方法可以获取表情符号 如上面的 并打印相应的表情符号 在本例中为 one 名称 我从 Discord py 反应对象中获取表情符号 就您而言 该表情符号是一个两个字符
  • 在 shell 脚本中将一个子字符串替换为另一个字符串

    我有 我爱苏子并结婚 我想将 苏子 更改为 萨拉 firstString I love Suzi and Marry secondString Sara 期望的结果 firstString I love Sara and Marry 要更换
  • 如何在 Ubuntu 10.04 上安装适用于 python 3 的 pycairo

    我正在尝试安装 pycairo 1 10 0 以便与我的自定义构建 python 3 1 一起使用 然而 sudo flower bin easy install 3 1 pycairo 失败了 XXX XXXX adventures su
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui
  • Python代码没有抛出错误,但所需的输出不一样

    无法接收 python 代码的输出 我尝试通过打印每一行来调试代码 def get sum metrics predictions metrics for i in range 0 3 metrics append lambda x x i
  • python名称错误名称未定义

    在 python3 中运行此代码时出现错误名称未定义 def main D create empty dictionary for x in open wvtc data txt key name email record x strip
  • AWS:Beanstalk 错误:操作被拒绝。您的权限正确吗?使用 EB CLI

    第一次尝试AWS托管 我使用 python3 4 eb CLI eb init 总是得到相同的错误输出 在同一用户的模拟器上 所有操作都是允许的 我哪里错了 为什么我总是收到错误 操作被拒绝 您的权限正确吗 使用 pip 安装 eb cli
  • IBM AIX:核心-外壳:显示文件修改日期

    我想用 bash 做这样的事情 查看文件上次修改的时间 ls lha ls full time 但我必须在 AIX 上使用 core shell 怎样才能达到这样的效果呢 您可以使用 istat istat test ksh Inode 8
  • 如何将数据通过管道传输到交互式 bash 脚本并将输出通过管道传输到另一个命令?

    我想将数据通过管道传输到交互式命令中 并将交互式命令的输出作为另一个命令的输入接收 例如 我希望能够执行以下操作 echo Zaphod hello sh goodbye sh 并让输出为 再见 你好 赞福德 这是我对此的初步破解 但我遗漏

随机推荐

  • 如何使用下载链接从 Azure Blob 存储下载文件

    我制作了一个 Azure 云服务 您可以在其中使用 Blob 将文件上传和删除到云存储 我成功编写了一个方法 您可以从云服务中删除上传的 blob public string DeleteImage string Name Uri uri
  • 使用 Xamarin Forms 打开 PDF

    我有一个 pdf 文件 已使用 xamarin 表单添加为 Android 和 IOS 项目的 AndroidAsset 和 BundleResource 我只是希望能够使用设备默认的任何 pdf 查看器从任何设备打开这些文件 本质上 我只
  • 将 error_info 添加到 std::exception

    我正在整合boost exception到现有代码中 部分代码现在使用BOOST THROW EXCEPTION 但有些人可能仍然会抛出标准std exception 我想在中间捕获站点添加 error info 根据文档 如果异常是boo
  • Base64 电子邮件附件无法上传

    我正在使用以下脚本http stuporglue org recieve e mail and save attachments with a php script http stuporglue org recieve e mail an
  • Dlib(支持 GPU)无法正常工作,不确定?

    我的系统配置 Windows 10 Nvidia 940mx 2GB GDDR5 GPU 8GB RAM 第 8 代 i5 安装的软件 CUDA工具包9 0 cuDNN 7 1 4 在使用以下命令安装上述要求后 我已成功安装了具有 GPU
  • C# string.Substring() 或 string.Remove() [重复]

    这个问题在这里已经有答案了 我想知道使用是否是更好的做法 var a b Substring 6 Or var a b Remove 0 6 哪一个更高效 更快 显然 substring 有更多选项可供选择 但没有什么是 Remove 不能
  • NGINX/JENKINS:您的反向代理设置似乎已损坏

    我已经尝试了至少六个关于如何让 NGINX 与 Jenkins 一起工作的示例 我最近的 NGINX 配置基于以下示例 https wiki jenkins io display JENKINS Running Jenkins behind
  • 删除 Windows 性能计数器类别

    我有一个自定义性能计数器类别 Visual Studio Server Explorer 拒绝删除它 声称它 未注册或属于系统类别 如果不以编程方式执行此操作 如何删除该类别 有我可以删除的注册表项吗 据我所知 有没办法安全地删除它们 除非
  • WCF:System.Net.SocketException - 通常只允许每个套接字地址(协议/网络地址/端口)使用一次

    我有一个 WCF 服务和一个 Web 应用程序 Web 应用程序以连续方式 也称为轮询 调用此 WCF 服务 在我们的生产环境中 我很少收到此错误 因为 这是一个内部活动 用户不知道何时抛出此错误 无法连接到http localhost Q
  • 键转义序列不适用于 tmux

    我一直在使用iTerm2 and vim一阵子 当我需要使用组合键时 我遇到了一些问题 例如CTRL F10 and SHIFT F10里面一个vim会话在里面运行iTerm2 定义键绑定非常简单 例如
  • JavaScript 中的逻辑运算符——如何使用它们?

    我不明白怎么办 and 适用于布尔值和其他数据类型 你如何使用它们 JavaScript 中的所有值要么是 真 要么是 假 a b计算结果为第一个假操作数 a b计算结果为第一个真实操作数 两个运算符都不会计算返回后的任何操作数 如果所有操
  • 永远运行不完的正则表达式

    我写了一个小而朴素的正则表达式 它应该查找括号内的文本 re search r s name 我知道由于某些原因这不是最好的方法 但它运行得很好 我正在寻找的只是一个解释 解释为什么对于某些字符串 这个表达式开始花费指数更长的时间 然后永远
  • Rails 3 - 多个控制器之间共享的代码 - 将其放在哪里?

    我有两个控制器需要一段代码 但不是全部 这个方法属于哪里呢 我读过有关帮助程序的内容 但那些似乎是用于与视图相关的代码 有人提出了 lib 文件夹 但这似乎离控制器逻辑 太远 我在视图或模型中不需要它 有人遇到过此类问题吗 有三个选项 最简
  • 如何让 Gitlab 6.5 在 Apache 2.4 代理下显示其图标?

    我无法修复由 Apache 2 4 代理的 Gitlab 上的图标 我的失败可能是因为我没有使用乘客 乘客提供了自己的一系列更深层次的问题 但我采取了在代理下运行它的所有步骤 gitlab 我也跑了 sudo u git H bundle
  • 如何重写 CursorAdapterbindView

    我正在尝试显示来自Cursor in a ListView 每行包含一个ImageView and a TextView 我有一个CustomCursorAdapter延伸CursorAdapter in bindView我评估来自光标的数
  • 数据仓库 - 具有多对多关系的缓慢变化的维度

    举个例子 假设我有一个包含两个维度和一个度量的事实表 事实货币表 项目密钥 int PersonKey 整数 现金金额 两个维度的定义如下 DimProject 0 型维度 即静态 项目密钥 int 项目名称 varchar 50 DimP
  • Glide 预加载不保存在缓存中

    我想在向用户显示图像之前预加载图像 我有一个 ViewPager 其中每个页面都是一张图像 当活动开始时 它会调用 Glide with this load uri preload 之后 所有图像都被预加载 理论上 为了测试预加载是否有效
  • 编写一个简单的语法解析器

    这就是我想做的 在 Php 中 给定一个字符串 得到如下结果 a b c a 是一个返回 true 或 false 的函数 这应该给b or c打电话后a a b d e c 同样的原则 最终结果应该是d e or c a b d e c
  • 本地模拟器分布式计数器扩展的实现

    firebase 扩展分布式计数器 https firebase google com products extensions firebase firestore counter可以直接安装到云端并且运行良好 要为应用程序开发新功能 我需
  • 更改 netCDF 文件的网格大小

    假设我有 2 个 netCDF 数据文件 其中包含同一区域 如南美洲 非洲等 的数据 但网格大小不同 另一个网格大小为 0 5 度 x 0 5 度 另一个网格大小为 1 0 度 x 1 0 度 我想将其网格大小增加或减少到不同的值 例如 0