Skip to content

隐式地层建模

dimine_python_sdk.lib.exploitation 提供 ImplicitModeling 类,基于钻孔数据库的分层信息进行隐式地层建模,生成各地层的三维三角网(TIN)实体。


一、基本用法

隐式地层建模使用 ImplicitModeling.stratum_modeling() 静态方法,传入 ImplicitStratumModelingParam 参数对象,返回 (地层名称, TINGeometry) 列表:

from dimine_python_sdk.lib.exploitation import ImplicitModeling
from dimine_python_sdk.lib.exploitation.models import (
    ImplicitStratumModelingParam,
    ImplicitStratumDataParam,
    ImplicitGridParam,
    ImplicitEstimationParam,
)

# 配置数据参数
data_param = ImplicitStratumDataParam(
    drill_file=r"F:\测试数据\钻孔数据库.dmd",
    layer_table="分层表",
    layer_table_field="地层",
    layer_sequence=["泥盆纪地层", "志留纪地层", "寒武纪地层"],
)

# 配置网格参数(可选,有默认值)
grid_param = ImplicitGridParam(
    x_node_num=81,
    y_node_num=81,
    z_node_num=20,
    offset=10.0,
)

# 配置估值参数(可选,有默认值)
estimation_param = ImplicitEstimationParam(
    reach=100.0,
    reach_point_num=10,
)

# 组合参数并执行建模
param = ImplicitStratumModelingParam(
    data=data_param,
    grid=grid_param,
    estimation=estimation_param,
    pinch_thickness=0.1,
)

results = ImplicitModeling.stratum_modeling(param)

for name, tin in results:
    print(f"地层: {name}")
    print(f"  顶点数: {tin.points.shape[0]}")
    print(f"  面片数: {tin.faces.shape[0]}")

二、数据参数(ImplicitStratumDataParam)

参数 类型 必填 说明
drill_file str 钻孔数据库文件路径(.dmd
layer_table str 分层表名称(DMD 扩展表)
layer_table_field str 分层表中地层字段名称
layer_sequence List[str] 可选 地层序列,按建模顺序排列。为 None 时由算法内部计算默认顺序

注意layer_table 对应的扩展表必须已包含在 DMD 文件中。如果 DMD 中没有该扩展表,需要通过 DmdFile.extend_tables 先添加。


三、网格参数(ImplicitGridParam)

控制隐式建模的网格分辨率。所有参数有默认值。

参数 类型 默认值 说明
type int 1 网格类型
adaptive bool True 是否自适应网格
x_node_num int 81 X 方向节点数(>1)
y_node_num int 81 Y 方向节点数(>1)
z_node_num int 20 Z 方向节点数(>1)
offset float 10.0 网格外扩距离(≥0)

四、估值参数(ImplicitEstimationParam)

控制隐式建模中插值估算的行为。所有参数有默认值。

参数 类型 默认值 说明
method int 0 估值方法
kernel_function int 0 核函数类型
reach_point_num int 10 邻域搜索点数(>0)
reach float 100.0 搜索半径(>0)
function_type int 0 变差函数类型
nugget float 0.0 块金值(≥0)
sill float 2.0 基台值(≥0)
range float 10.0 变程(>0)
ellipse_rate float 1.0 椭球各向异性比(>0)
main_angle float 0.0 主方向角(度)

五、建模结果

stratum_modeling() 返回 List[Tuple[str, TINGeometry]],按地层建模顺序排列,每项为 (地层名称, 三角网实体)

results = ImplicitModeling.stratum_modeling(param)

for name, tin in results:
    print(name)
    # 三角网顶点 (N, 3)
    print(tin.points.shape)
    # 三角网面片索引 (M, 3)
    print(tin.faces.shape)

结果可进一步用于: - 保存为 DMF 文件(通过 DmfFile.insert_shell) - 3D 可视化渲染(通过 render_tin


六、异常处理

from dimine_python_sdk.lib.exploitation import ImplicitModelingError, ImplicitStratumModelingError

try:
    results = ImplicitModeling.stratum_modeling(param)
except ImplicitStratumModelingError as e:
    print(f"隐式地层建模失败: {e}")
except ImplicitModelingError as e:
    print(f"隐式建模异常: {e}")

异常层次: - ImplicitModelingError(RuntimeError) — 隐式建模异常基类 - ImplicitStratumModelingError(ImplicitModelingError) — 隐式地层建模失败


参考链接