Skip to content

exploitation

Native Layer v2 开采模块

巷道/轮廓建模,对外返回 NativeTin 列表。

contour_extrapolate_modeling(param)

轮廓线外推建模

Source code in dimine_python_sdk\lib\native\exploitation.py
78
79
80
81
82
83
84
def contour_extrapolate_modeling(param: dict | str) -> list[NativeTin]:
    """轮廓线外推建模"""
    try:
        result = Dm.ContourExtrapolateModeling(_serialize_param(param))
    except Exception as exc:
        raise NativeExploitationError(f"轮廓线外推建模失败: {exc}") from exc
    return _convert_polydata_list(result, "轮廓线外推建模")

get_section_contour(param)

获取断面轮廓

Source code in dimine_python_sdk\lib\native\exploitation.py
37
38
39
40
41
42
43
44
45
46
47
48
def get_section_contour(param: dict | str) -> "np.ndarray":
    """获取断面轮廓"""
    import numpy as np

    try:
        result = Dm.GetSectionContour(_serialize_param(param))
    except Exception as exc:
        raise NativeExploitationError(f"断面生成失败: {exc}") from exc

    if result is None:
        raise NativeExploitationError("断面生成返回空结果")
    return np.asarray(result, dtype=float)

implicit_stratum_modeling(param)

隐式地层建模

C++ 返回 (polydata_list, msg) 元组: - 失败时 list 为空,msg 为错误信息; - 成功时 msg 携带各地层名称(非标准 JSON,由 _parse_lithology_names 解析)。

Source code in dimine_python_sdk\lib\native\exploitation.py
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
def implicit_stratum_modeling(param: dict | str) -> list[NativeLithologyModel]:
    """
    隐式地层建模

    C++ 返回 (polydata_list, msg) 元组:
    - 失败时 list 为空,msg 为错误信息;
    - 成功时 msg 携带各地层名称(非标准 JSON,由 _parse_lithology_names 解析)。
    """
    try:
        result = Dm.ImplicitStratumModeling(_serialize_param(param))
    except Exception as exc:
        raise NativeExploitationError(f"隐式地层建模失败: {exc}") from exc

    if not isinstance(result, (tuple, list)) or len(result) != 2:
        raise NativeExploitationError(f"隐式地层建模返回结果格式异常: {result!r}")

    polydata_list, msg = result[0], str(result[1])
    if not polydata_list:
        raise NativeExploitationError(f"隐式地层建模失败: {msg or '未知错误'}")

    names = _parse_lithology_names(msg, len(polydata_list))
    return [
        NativeLithologyModel(name=name, tin=_geom.tin_from_polydata(item))
        for name, item in zip(names, polydata_list)
    ]

laneway_modeling(param)

巷道/竖井建模

Source code in dimine_python_sdk\lib\native\exploitation.py
51
52
53
54
55
56
57
def laneway_modeling(param: dict | str) -> list[NativeTin]:
    """巷道/竖井建模"""
    try:
        result = Dm.LanewayModeling(_serialize_param(param))
    except Exception as exc:
        raise NativeExploitationError(f"巷道建模失败: {exc}") from exc
    return _convert_polydata_list(result, "巷道建模")

multi_parallel_contour_modeling(param)

多平行轮廓线建模

Source code in dimine_python_sdk\lib\native\exploitation.py
87
88
89
90
91
92
93
def multi_parallel_contour_modeling(param: dict | str) -> list[NativeTin]:
    """多平行轮廓线建模"""
    try:
        result = Dm.MultiParallelContourModeling(_serialize_param(param))
    except Exception as exc:
        raise NativeExploitationError(f"多平行轮廓线建模失败: {exc}") from exc
    return _convert_polydata_list(result, "多平行轮廓线建模")

single_contour_modeling(param)

单轮廓线封闭为面

Source code in dimine_python_sdk\lib\native\exploitation.py
69
70
71
72
73
74
75
def single_contour_modeling(param: dict | str) -> list[NativeTin]:
    """单轮廓线封闭为面"""
    try:
        result = Dm.SingleContourModeling(_serialize_param(param))
    except Exception as exc:
        raise NativeExploitationError(f"单轮廓线建模失败: {exc}") from exc
    return _convert_polydata_list(result, "单轮廓线建模")

surface_modeling(contour_lines, mode=0)

地表建模:从等高线生成三角网地表(DTM)。

将输入的等高线写入临时 DMF 文件,调用 C++ SurfaceModeling 生成地表 三角网,读取结果后清理临时文件。

Parameters

contour_lines : list of np.ndarray 等高线列表,每条为 shape (N, 3) 的 numpy 数组。 mode : int 建模模式,默认 0。

Returns

list[NativeTin] 生成的三角网地表列表。

Source code in dimine_python_sdk\lib\native\exploitation.py
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
def surface_modeling(contour_lines: list, mode: int = 0) -> list[NativeTin]:
    """
    地表建模:从等高线生成三角网地表(DTM)。

    将输入的等高线写入临时 DMF 文件,调用 C++ SurfaceModeling 生成地表
    三角网,读取结果后清理临时文件。

    Parameters
    ----------
    contour_lines : list of np.ndarray
        等高线列表,每条为 shape (N, 3) 的 numpy 数组。
    mode : int
        建模模式,默认 0。

    Returns
    -------
    list[NativeTin]
        生成的三角网地表列表。
    """
    import json
    import os
    import shutil
    import tempfile

    import numpy as np

    from dimine_python_sdk.lib.native.io import write_dmf
    from dimine_python_sdk.lib.native.models import NativeEntity, NativeLayer

    # 构建 NativeLayer,每条等高线为一个 polyline 实体
    entities: list[NativeEntity] = []
    for i, line in enumerate(contour_lines):
        pts = np.asarray(line, dtype=float)
        if pts.ndim != 2 or pts.shape[1] < 2:
            raise NativeExploitationError(
                f"等高线 {i} 格式无效: shape={pts.shape},期望 (N, 3)"
            )
        entities.append(
            NativeEntity(
                entity_type="polyline",
                name=f"contour_{i}",
                geometry=ensure_points(pts),
            )
        )
    layer = NativeLayer(name="contours", entities=entities)

    tmp_dir = tempfile.mkdtemp(prefix="dm_surface_")
    tmp_file = os.path.join(tmp_dir, "surface_input.dmf")
    try:
        write_dmf(tmp_file, [layer])
        param = json.dumps({"file": tmp_file, "mode": int(mode)}, ensure_ascii=False)
        try:
            result = Dm.SurfaceModeling(param)
        except Exception as exc:
            raise NativeExploitationError(f"地表建模失败: {exc}") from exc
        return _convert_polydata_list(result, "地表建模")
    finally:
        shutil.rmtree(tmp_dir, ignore_errors=True)

two_contour_modeling(param)

两轮廓线建模

Source code in dimine_python_sdk\lib\native\exploitation.py
60
61
62
63
64
65
66
def two_contour_modeling(param: dict | str) -> list[NativeTin]:
    """两轮廓线建模"""
    try:
        result = Dm.TwoContourModeling(_serialize_param(param))
    except Exception as exc:
        raise NativeExploitationError(f"两轮廓线建模失败: {exc}") from exc
    return _convert_polydata_list(result, "两轮廓线建模")

unite_polydata(tin_list)

实体合并

Source code in dimine_python_sdk\lib\native\exploitation.py
 96
 97
 98
 99
100
101
102
103
def unite_polydata(tin_list: list[NativeTin]) -> list[NativeTin]:
    """实体合并"""
    native_objs = [_geom.tin_to_polydata(tin)._cpp_obj for tin in tin_list]
    try:
        result = Dm.UnitePolyData(native_objs)
    except Exception as exc:
        raise NativeExploitationError(f"实体合并失败: {exc}") from exc
    return _convert_polydata_list(result, "实体合并")