学术资源 / 固定快照
GemPy 2026.2 测试版新增有限断层
GemPy 是基于 Python 的开源三维结构地质建模库,能依据地层界面点和产状数据,用隐式插值构建含褶皱、断层网络和不整合的地质模型。2026 年 10 月 13 日和 14 日,项目先后发布 2026.2.0a0 与 2026.2.0a1 两个 alpha(测试)版本,新增有限断层接口和局部微点约束。本文为资料核验,未安装实测。  三维地质模型示例:乌克兰苏基利河地区的三维地质模型。该图并非 GemPy 生成,仅用于展示三维地质模型的常见形态。作者:Nmsol;来源:[Wikimedia Commons](https://commons.wikimedia.org/wiki/File:3D_Geological_Model.png);许可:[CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0)。 ### 建模方法与输入输出 项目仓库为 [gempy-project/gempy](https://github.com/gempy-project/gempy),2017 年在 GitHub 创建,截至 2026-10-20 未归档;GitHub 与 PyPI 均标注代码许可证为 EUPL-1.2(欧盟公共许可证 1.2 版)。方法上,GemPy 采用 Lajaunie 等人提出、Calcagno 等人扩展的通用协克里金插值,在三维空间里计算一个标量场,把地层界面、断层面等地质界面表示为这个场的等值面;理论细节见 2019 年发表于 Geoscientific Model Development 的开放获取论文《GemPy 1.0》。输入主要有两类观测:标出不同地质单元分界位置的界面接触点三维坐标,以及反映层面倾向和倾角的产状测量;用户还要设定地层序列、不整合和断层网络等关系。按官方文档,它可以处理多套整合地层、不整合、岩浆体、断层网络以及倒转褶皱在内的褶皱;结果可以用 matplotlib 画成二维剖面或地质图,也可以用 PyVista 做交互式三维显示。项目从设计之初就考虑嵌入概率框架,用于地下结构的不确定性分析。当前的 GemPy v3 由 `gempy`、计算核心 `gempy_engine` 和可视化包 `gempy_viewer` 配合使用;旧版 v2 以 `gempy_legacy` 保留,核心团队不再为它开发新功能。 ### 2026.2 测试版的改动 据 GitHub Releases 记录,2026.2.0a0 于 2026 年 10 月 13 日发布,2026.2.0a1 于 10 月 14 日发布,两者也已上传 PyPI。改动集中在四个方面: - **有限断层接口**(PR #1105,进入 a0):新增面向用户的 `FiniteFault` 数据类,用中心点、走向与倾向两个方向的半径、衰减(taper)类型和旋转来描述一条只在有限范围内延伸的断层,取代原先的 `FiniteFaultData`。断层组可以设为有限断层,也可以停用后再启用而不丢失几何参数;`fault_type` 属性会报告无限、有限或停用三种状态。用户坐标到引擎坐标的转换推迟到计算时进行。 - **微点数据表**(PR #1107 进入 a0,PR #1111 进入 a1):新增 `MicroPointsTable`,用来存放高密度的局部接触观测。按设计,这些微点只在局部修正已有的宏观模型,不参加全局协克里金方程组;每个微点带有位置、方向、各向异性相关长度和单独的块金值。a1 在插值流程中加入了微点支持。 - **模型文件与序列化**(PR #1107、#1108、#1112):`.gempy` 模型文件格式升到第 2 版,新增 `micro_points.bin` 成员并写入序列化元数据,旧的第 1 版文件仍能读取;重复保存同一模型会得到逐字节一致的文件。a1 另外加入场计算上下文(field evaluation context),改进网格划分,并更新了 JSON 序列化。 - **依赖要求**:PyPI 上的 2026.2.0a1 要求 `gempy_engine>=2026.2.0a0`,计算核心需要同步升级到同一系列。  无限断层与有限断层的概念对比:左侧断层面贯穿整个块体;右侧变形只发生在椭圆范围内,并向边缘减弱,箭头示意两个方向的半径。本图并非 GemPy 输出,只用于说明概念。AI 生成示意图。
- 收录日期
- 2026-10-20
- 类别
- 数据与评测
- 状态
- 资料核验,未安装实测
为何收录
对地质与地球物理研究者,GemPy 的主要用处是把三维建模过程写成可以重跑的 Python 代码:界面点、产状、地层序列和断层关系都以数据和参数的形式保存,换一组观测或改一个构造假设就能重新计算并对比结果,方法也便于随论文公开。README 列出的使用案例包括墨西哥盆地的结构建模、巴西佩洛塔斯盆地和德国诺德奈岛的水文地质模型、东阿尔卑斯褶皱冲断带的不确定性估计,以及隐式概率建模中的重力正演。2026.2 测试版补上的两项能力都对应常见的建模需求:有限断层用来表示没有贯穿整个研究区、位移向边缘消失的断层;微点表则给高密度的局部接触观测一个单独的位置,让它们修正局部而不必全部进入全局插值。结合项目原有的随机建模支持,研究者可以检验观测误差和参数选择会让地下结构的推断变化多少。
局限与注意事项
- 仍是 alpha 版本:2026.2.0a0 和 2026.2.0a1 的版本号带 a(alpha)标记,README 仍把 2026 年 6 月发布的 2026.0.3 称为最新稳定版,PyPI 项目页默认展示的也是 2026.0.3。按 Python 包的版本规则,
pip install gempy[base] 默认不会安装 alpha 版本,需要显式写出版本号。
- 新功能缺少公开评测:发布说明没有给出新功能的精度或性能数据。微点功能最初合并时(PR #1107)写明,引擎端的坐标转换、局部 RBF 求解与梯度计算、按接触点加密八叉树都还没有实现;a1 的插值支持覆盖到哪一步,PR 中没有文字说明,使用前应查看代码和测试。
- 有限断层有使用条件:只能配合各向同性、不倾斜的模型坐标变换,否则会报错。
- 接口与文件兼容:
FiniteFaultData 已被移除,依赖旧接口的脚本需要改写;新格式模型文件能否被旧版本读取,说明中没有提到。官方文档站当前显示的构建版本是 2024.2 系列,新接口的说明主要见于 PR 和源码。
- 许可条款:EUPL-1.2 是带互惠义务的 copyleft 许可,修改后再分发需要按条款提供源代码;把 GemPy 集成进其他软件或对外分发之前,应阅读仓库中的 LICENSE 原文。代码许可不涉及用户自己的地质数据。
- 模型不等于实测地下结构:隐式插值给出的是满足所给观测和设定的一种几何,数据稀疏的区域主要由插值假设决定,需要结合地质判断和不确定性分析使用。
本文依据 GitHub、PyPI、官方文档和论文整理,未安装实测。建议的验收方式是:选一个官方教程模型,分别用 2026.0.3 和 2026.2.0a1 计算,对比地层分布和界面位置是否一致,确认无误后再迁移自己的项目,并为每次建模保存输入数据和软件版本记录。
参考文献
-
GemPy 项目. gempy-project/gempy GitHub 仓库(核验日期 2026-10-20)
-
GemPy 项目. Release 2026.2.0a0,2026-10-13
-
GemPy 项目. Release 2026.2.0a1,2026-10-14
-
GemPy 项目. PR #1105: Add FiniteFault user-facing API
-
GemPy 项目. PR #1107: Add MicroPointsTable, element ownership, and versioned serialization
-
gempy 2026.2.0a1 · PyPI
-
GemPy 官方文档
-
de la Varga, M., Schaaf, A., & Wellmann, F. (2019). GemPy 1.0: open-source stochastic geological modeling and inversion. Geoscientific Model Development, 12, 1–32.
-
信息由 Scholay 学术一站式平台 整理并发表,如有侵权请反馈下架。
-
信息同步发表于恩特学术,智能时代的学者社区
在交互式日历中查看这条记录 ↗