水动力模型输出提取与处理工具

thyme的Python项目详细描述


百里香

t工具用于hydrodynamicmODEL输出e提取

提供处理、插值和 转换水动力海洋模型netcdf数据集。

为什么?

现在有许多流体动力学建模框架被 海洋学界。所有模型都输出为netcdf格式,但是 结构、尺寸、变量、属性、命名约定, 坐标系和掩蔽规则都会有很大的变化,使得 用户很难从中提取有意义的信息 复杂系统。

这个包试图支持一种通用的交互方法 通过提取每个建模系统的细微差别来使用这些数据集 分成不同的模块,并用一个单独的api统一它们。

支持的型号

注:到目前为止,该软件包已通过测试,可与国家海洋公司合作。 业务(NOS)运营预测系统(OFS)(如CBOFS、DBOFS, ngofs等),但是如果稍加调整,它也应该可以处理输出。 来自非OFS型号。

目前支持以下海洋建模框架:

区域海洋模拟系统(ROMS)

< Buff行情>

"ROMS是一个自由曲面,地形跟随,原始方程 科学界广泛使用的海洋模型 应用范围…在水平方向,基本方程 使用边界拟合、正交曲线计算 交错荒川C网格上的坐标。一般公式 曲线坐标包括笛卡尔(常数度量)和 球面(可变度量)坐标。海岸线也可以 通过陆海掩蔽指定为有限离散网格。如在 垂直的,水平的模板使用一个居中的,二阶的 有限差分。"

来自https://www.myroms.org/" rel="nofollow">https://www.myroms.org/

的说明

有限体积社区海洋建模系统(FVCOM)

< Buff行情>

"FVCOM是一个预测性的非结构化网格,有限体积, 自由面三维原始方程沿岸海洋环流模式 由UMASDS-WHOI共同开发。模型包括 动量、连续性、温度、盐度和密度方程 在物理和数学上使用湍流闭合 子模型。水平网格由非结构三角形组成 单元和不规则底是用广义的 地形跟踪坐标。"

来自http://fvcom.smast.umasd.edu/fvcom/" rel="nofollow">http://fvcom.smast.umasd.edu/fvcom/

的说明

普林斯顿海洋模型(POM)

< Buff行情>

"POM是一个西格玛坐标(地形跟踪),自由水面海洋 嵌入湍流和波浪子模型的模型,以及干湿模型 功能。"

来自http://www.ccpo.odu.edu/pomweb/index.html" rel="nofollow">http://www.ccpo.odu.edu/pomweb/index.html的说明

混合坐标海洋模型(hycom)

< Buff行情>

"混合坐标海洋模型是一个原始方程海洋 从迈阿密演变而来的大气环流模式 rainer-bleck和 同事。hycom中的垂直坐标在 开阔的,分层的海洋。但是,它们平稳地过渡到z 弱分层上层海洋混合层中的坐标 浅水区地形跟随sigma坐标 在非常浅的水中调平坐标。"

来自https://www.hycom.org/attachments/067_overview.pdf的说明

此外,一个通用的直线模块是为了支持 坐标系符合直线网格的任何模型输出 其深度坐标反映了标准深度/z层 此模块不支持垂直插值。

功能

索引(网格定义)文件

为了将模型输出文件转换为常规网格,索引文件 必须在运行时提供。索引文件的目的是持久化 在模型运行之间不改变的信息,以减少 每个周期运行的总处理时间。存储在 索引文件包括输出网格定义和通用元数据 关于模型本身。基于fvcom的混合模型索引文件 (广义)坐标系附加存储插值垂直 每个输出网格单元的坐标值。

生成网格定义时,用户可以选择使用 模型域的全部范围或提供shapefile 包含定义子网格的一个或多个多边形 (子区域/子域)网格定义将符合的。如果 未指定子网格形状文件,生成的索引文件将定义 与整个模型域匹配的规则网格(带nodata掩码) (程度)否则,如果指定了子网格形状文件,则 索引文件将定义与 与模型域相交的所有子网格多边形的统一范围, 以及识别对应网格单元范围的信息 每个子网格。注意,当提供子网格shapefile时,所有 子网格多边形必须是矩形的,彼此一致,并且 彼此相邻。

子网格索引用于将模型输出子集到 较小的地理区域(即瓷砖),从而导致较小的 输出文件大小。可选地,对于子网格索引文件,用户可以 指定子网格shapefile中属性字段的名称 唯一标识每个子网格(平铺)。如果未指定字段,则每个 多边形的fid值用作标识符。此标识符可以是 用于构造唯一的文件名。

此外,当 生成索引文件。如果提供,任何输出网格单元 质心与地面相交多边形将在最终网格中被遮罩 定义。

必须为每个海洋预报系统创建一个索引文件 目标分辨率和范围的组合(是否使用模型的 完整域范围或子网格定义)。

何时生成新索引文件

一旦创建了模型索引文件,就可以无限期地为 模型/分辨率/范围/土地遮罩,直到 改变。例如,如果基于FVCOM的模型有一个混合(广义的) 在某一点(即西格玛)修改的垂直坐标系 值已更改),任何关联的索引文件都需要 使用更新格式的新模型输出文件重新生成。

通常,需要一个新的索引文件:

要求

这个代码库是为python 3编写的,依赖于以下python 套餐:

安装

此包使用的gdal python绑定要求系统库 现在,所以它通常不能使用pip install gdal安装。 我们建议通过包管理器(例如 condaaptyumpacman)或从头编译。 miniconda可能是 最简单的方法。

一旦安装了gdal,就可以使用pip安装百里香:

pipinstallthyme

示例用法

使用默认值为基于FVCOM的模型生成新索引文件 网格范围,500米目标分辨率,海岸线形状 定义要掩蔽的土地区域:

fromthyme.modelimportfvcomnative_model_file=fvcom.FVCOMFile('/path/to/existing_fvcom_file.nc')model_index_file=fvcom.FVCOMIndexFile('/path/to/new_index_file.nc')try:native_model_file.open()model_index_file.open()model_index_file.init_nc(native_model_file,500,'my_fvcom_model','/path/to/shoreline_shapefile.shp')finally:model_index_file.close()native_model_file.close()

使用子网格为基于roms的模型生成新索引文件 shapefile(字段名'id'用于标识子网格区域)和 约300米目标分辨率(未指定海岸线掩码形状文件):

fromthyme.modelimportromsnative_model_file=roms.ROMSFile('/path/to/existing_roms_file.nc')model_index_file=roms.ROMSIndexFile('/path/to/new_index_file.nc')try:native_model_file.open()model_index_file.open()model_index_file.init_nc(native_model_file,300,'my_roms_model',None,'/path/to/subgrid_shapefile.shp','subgrid_id_fieldname')finally:model_index_file.close()native_model_file.close()

将基于roms的模型中的u/v电流分量插值到 在现有模型索引文件中定义的规则网格,深度为4.5 地表以下米,时间指数为0,并存储结果U/V 两个numpy.ma.masked_数组中的值对象:

fromthyme.modelimportromsnative_model_file=roms.ROMSFile('/path/to/existing_roms_file.nc')model_index_file=roms.ROMSIndexFile('/path/to/existing_index_file.nc')try:native_model_file.open()model_index_file.open()(u_with_mask,v_with_mask)=native_model_file.uv_to_regular_grid(model_index_file,0,4.5)# u_with_mask and v_with_mask now contain 2D numpy masked arraysfinally:model_index_file.close()native_model_file.close()

作者

许可证

这项工作,作为一个整体,是根据BSD 2条款许可(见 许可证,但它包含来自 美国国家海洋和大气管理局(NOAA),2017年- 2019年,分别致力于公共领域。

免责声明

这个储存库是一个科学产品,不是官方的 国家海洋和大气管理局的通信,或 美国商务部。所有noaa github项目代码 按"原样"提供,用户承担责任 供其使用。对商务部或商务部的任何索赔 由于使用这个github项目而产生的商务局 受所有适用的联邦法律管辖。任何具体的 商业产品、过程或服务的服务标志、商标, 制造商或其他方不构成或暗示 商务部的认可、推荐或支持。 商务部的印章和标志,或文件的印章和标志 主席团,不得以任何方式暗示任何 DOC或美国政府的商业产品或活动。

致谢

这个软件是由国家海洋和大气 国家海洋局 测量(OCS)/海岸测量开发实验室(CSDL),供 科学和海洋学界。

CSDL感谢以下实体的帮助:

  • NOAA/NOS/海洋产品和服务运行中心 (合作)
  • 加拿大水文局(CHS)
  • Teledyne Caris

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java读取SSLSocket的最快或最佳方式   JavaGuice向类构造函数注入对象   java类不是抽象的,并且不会覆盖OnClickListener中的抽象方法onClick(视图)   java OpenGL 1.1更改颜色更改以前的颜色?   c#将Java/Android连接到。网络服务   java在节点上生成AES密钥   java Liferay与MarkLogic XDBC数据库集成   java使用静态初始化块来提高性能   java如何在需要不同参数的另一个方法中使用同一类中的方法   音频Java多种声音   Java显式引用转换   java Intellij,如何在maven项目中导入模块   java在什么条件下调用ELResolver的setValue方法?   java在beanshell中计算代码字符串并获取beanshell解释器返回的值   javascript将音频文件上载到服务器并从服务器响应设置图像   编码风格清理java代码,多个else if语句   java是否需要使此变量可变?   java线程未更新GlassPane上的进度条   java关闭调试模式@Vaadin Spring启动应用程序