Skip to content

models

BlockModelCommonParams

Bases: ParamModel

块段模型估值通用参数基类(距离幂/克里格共用)

Source code in dimine_python_sdk\lib\prospecting\models.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class BlockModelCommonParams(ParamModel):
    """块段模型估值通用参数基类(距离幂/克里格共用)"""

    sample_file: str = Field(..., description="dmg样品数据文件路径")
    variables: str = Field(..., alias="variable", description="估值变量即元素列表字段,多个元素用逗号隔开,元素即对应钻孔数据库中元素名称")
    extra_attributes: str = Field(..., alias="extra_attribute", description="额外属性字段(如到样品点平均距离、到样品点最近距离、样品点数目、工程数目等),支持输入多个属性名称,多个属性用逗号隔开")
    min_value: Optional[float] = Field(default=0.0001, description="估值最小值")
    max_value: Optional[float] = Field(default=9999, description="估值最大值")
    single_block_min: Optional[float] = Field(default=4, description="单块最小尺寸")
    single_block_max: Optional[float] = Field(default=8, description="单块最大尺寸")
    sub_block_main: Optional[int] = Field(default=1, description="主轴离散块数,在计算某个块品位储量时,可以先分割成多个子块用于更精确计算。")
    sub_block_second: Optional[int] = Field(default=1, description="次轴离散块数,在计算某个块品位储量时,可以先分割成多个子块用于更精确计算。")
    sub_block_short: Optional[int] = Field(default=1, description="短轴离散块数,在计算某个块品位储量时,可以先分割成多个子块用于更精确计算。")
    angle_main: Optional[float] = Field(default=10, description="椭球体参数:搜索角度:主轴方向角度(度)")
    angle_second: Optional[float] = Field(default=0, description="椭球体参数:搜索角度:次轴方向角度(度)")
    angle_short: Optional[float] = Field(default=15, description="椭球体参数:搜索角度:短方向角度(度)")
    main_radius: Optional[float] = Field(default=1536, gt=0, description="椭球体参数:主轴半径。主方向搜索半径,单位m")
    second_main_rate: Optional[float] = Field(
        default=0.8, ge=0, le=1, description="椭球体参数:次方向搜索半径比例(相对于主方向)即:次轴/主轴 的比例,根据主轴半径可以算出次轴半径"
    )
    short_main_rate: Optional[float] = Field(
        default=0.2, ge=0, le=1, description="椭球体参数:短方向搜索半径比例(相对于主方向)即:短轴/主轴 的比例,根据主轴半径可以算出短轴半径"
    )
    octant_max: Optional[int] = Field(default=0, ge=0, description="八分圆最大值")
    project_count_min: Optional[int] = Field(default=0, ge=0, description="工程数最小值")
    single_project_sample_max: Optional[int] = Field(default=0, ge=0, description="单工程样品数最大值")

BlockModelDistancePowerParams

Bases: BlockModelCommonParams

距离幂估值专属参数类(继承通用参数+新增距离幂特有参数)

Source code in dimine_python_sdk\lib\prospecting\models.py
40
41
42
43
class BlockModelDistancePowerParams(BlockModelCommonParams):
    """距离幂估值专属参数类(继承通用参数+新增距离幂特有参数)"""

    power: Optional[int] = Field(default=2, description="距离幂次(如 2)")

BlockModelKrigingParams

Bases: BlockModelCommonParams

克里格估值专属参数类(继承通用参数+新增克里格特有参数)

Source code in dimine_python_sdk\lib\prospecting\models.py
46
47
48
49
50
51
52
53
54
55
class BlockModelKrigingParams(BlockModelCommonParams):
    """克里格估值专属参数类(继承通用参数+新增克里格特有参数)"""

    krig_type: Literal[0,1,2] = Field(default=1, description="克里格类型,0-简单克里格,1-普通克里格,2-对数正太克里格")
    sk: Optional[int] = Field(default=0, description="克里格相关参数")
    c0: Optional[int] = Field(default=0, description="块金值")
    variational_function: list = Field(
        default_factory=lambda: [{"type": 0, "range": 22, "cc": 0.162586}],
        description="变差函数参数列表",
    )

CreateBlockModelParams

Bases: ParamModel

创建空块段模型参数,即 注意:为什么没有输入文件,因为这只是创建空块段模型,只需要矿体包围盒范围即可

Source code in dimine_python_sdk\lib\prospecting\models.py
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
class CreateBlockModelParams(ParamModel):
    """创建空块段模型参数,即
    注意:为什么没有输入文件,因为这只是创建空块段模型,只需要矿体包围盒范围即可"""

    file_name: str = Field(..., description="输出块段模型文件路径,块段模型是dmb文件")
    origin_x: float = Field(..., description="起点 X,即包围盒的X最小点")
    origin_y: float = Field(..., description="起点 Y,即包围盒的Y最小点")
    origin_z: float = Field(..., description="起点 Z,即包围盒的Z最小点")
    rotate_x: Optional[float] = Field(default=0, description="绕 X 轴旋转角度")
    rotate_y: Optional[float] = Field(default=0, description="绕 Y 轴旋转角度")
    rotate_z: Optional[float] = Field(default=0, description="绕 Z 轴旋转角度")
    size_x: Optional[float] = Field(default=1, description="单元块 X 尺寸")
    size_y: Optional[float] = Field(default=1, description="单元块 Y 尺寸")
    size_z: Optional[float] = Field(default=1, description="单元块 Z 尺寸")
    length_x: float = Field(..., description="X 方向延伸长度,即包围盒的X方向长度")
    length_y: float = Field(..., description="Y 方向延伸长度,即包围盒的Y方向长度")
    length_z: float = Field(..., description="Z 方向延伸长度,即包围盒的Z方向长度")
    field_definition: list[FieldDefinition] = Field(
        default_factory=lambda: [
            FieldDefinition(field_name="岩石类型", field_type="字节型"),
            FieldDefinition(field_name="体重", field_type="浮点型"),
        ],
        description="块段属性定义清单,每个块段的属性字段名称和类型",
    )

DTMConstraint

Bases: ParamModel

DTM 约束 (type=1):基于 DTM 模型的上部/下部空间约束

Source code in dimine_python_sdk\lib\prospecting\models.py
76
77
78
79
80
81
82
83
84
85
86
class DTMConstraint(ParamModel):
    """DTM 约束 (type=1):基于 DTM 模型的上部/下部空间约束"""

    type: Literal[1] = Field(default=1, description="DTM约束类型")
    file: str = Field(..., description="DTM 文件路径")
    range: int = Field(default=0, description="约束范围,0=上部,1=下部")
    inside_level: int = Field(default=8, description="内部尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    boundary_level: int = Field(default=11, description="边界尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,11=1.25*1.25*0.625,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )

EntityConstraint

Bases: ParamModel

实体约束 (type=0):基于实体模型的内部/外部空间约束

Source code in dimine_python_sdk\lib\prospecting\models.py
63
64
65
66
67
68
69
70
71
72
73
class EntityConstraint(ParamModel):
    """实体约束 (type=0):基于实体模型的内部/外部空间约束"""

    type: Literal[0] = Field(default=0, description="实体约束类型")
    file: str = Field(..., description="约束实体dmf文件路径,即矿体模型文件路径")
    range: int = Field(default=0, description="约束范围,0=内部,1=外部")
    inside_level: int = Field(default=8, description="内部尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    boundary_level: int = Field(default=11, description="边界尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,11=1.25*1.25*0.625,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )

FieldDefinition

Bases: ParamModel

块段模型属性字段定义

Source code in dimine_python_sdk\lib\prospecting\models.py
197
198
199
200
201
202
203
204
class FieldDefinition(ParamModel):
    """块段模型属性字段定义"""

    field_name: str = Field(..., description="字段名称")
    field_type: Literal["字节型", "整型", "浮点型", "双精度型", "字符串型"] = Field(
        ..., description="字段类型"
    )
    field_length: Optional[int] = Field(default=120, description="字段长度")

HighGradeProcessParam

Bases: ParamModel

特高品位处理参数

Source code in dimine_python_sdk\lib\prospecting\models.py
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
class HighGradeProcessParam(ParamModel):
    """特高品位处理参数"""

    input_file: str = Field(..., description="输入dmg文件路径")
    grade_field: str = Field(..., description="品位字段名")
    process_mode: Optional[Literal[0, 1]] = Field(
        default=0, description="处理模式(0:国内;1:国外)"
    )
    average_multiple: Optional[Literal[6, 7, 8]] = Field(
        default=6, description="平均值倍数"
    )
    frequency: Optional[float] = Field(
        default=0.95,
        ge=0,
        le=1,
        description="累积频率阈值(0-1 之间,常见值:0.95, 0.975, 0.977)",
    )
    replace_method: Optional[Literal[0, 1, 2, 3, 4, 5]] = Field(
        default=2,
        description="替换方式(0:剔除法,1:给定值,2:相邻样品平均值,3:矿体平均品位法,4:单一工程法,5:截止品位法)",
    )
    assign_value: Optional[float] = Field(
        default=0.0,
        description="给定值方法对应的值,(replace_method=1时,默认值为0, replace_method=2时,默认值为2)",
    )
    adjoin_average: Optional[float] = Field(default=2, description="相邻样品平均值")
    average_method: Optional[Literal[0, 1]] = Field(
        default=1, description="平均值计算方式(0:算数平均,1:长度加权平均)"
    )
    contain_mode: Optional[Literal[0, 1]] = Field(
        default=0, description="包含模式(0:包含特高品位,1:不包含)"
    )
    result_field: Optional[str] = Field(
        default=None, description="结果字段名(未设置时默认为 {grade_field}_processed)"
    )

PlaneConstraint

Bases: ParamModel

平面约束 (type=4):由平面方程 ax+by+cz+d=0 定义的上部/下部约束

Source code in dimine_python_sdk\lib\prospecting\models.py
120
121
122
123
124
125
126
127
128
129
130
131
132
133
class PlaneConstraint(ParamModel):
    """平面约束 (type=4):由平面方程 ax+by+cz+d=0 定义的上部/下部约束"""

    type: Literal[4] = Field(default=4, description="平面约束类型")
    a: float = Field(..., description="平面方程系数 a(法向量 X 分量),通过ax+by+cz+d=0构成一个平面")
    b: float = Field(..., description="平面方程系数 b(法向量 Y 分量),通过ax+by+cz+d=0构成一个平面")
    c: float = Field(..., description="平面方程系数 c(法向量 Z 分量),通过ax+by+cz+d=0构成一个平面")
    d: float = Field(..., description="平面方程常数 d,通过ax+by+cz+d=0构成一个平面")
    range: int = Field(default=0, description="约束范围,0=上部,1=下部")
    inside_level: int = Field(default=8, description="内部尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    boundary_level: int = Field(default=11, description="边界尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,11=1.25*1.25*0.625,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )

PolylineConstraint

Bases: ParamModel

闭合多段线约束 (type=3):基于闭合多段线 + 坐标轴范围的约束

Source code in dimine_python_sdk\lib\prospecting\models.py
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
class PolylineConstraint(ParamModel):
    """闭合多段线约束 (type=3):基于闭合多段线 + 坐标轴范围的约束"""

    type: Literal[3] = Field(default=3, description="闭合多段线约束类型")
    file: str = Field(..., description="闭合多段线dmf文件路径")
    range: int = Field(default=0, description="约束范围,0=内部,1=外部")
    attribute: Literal["X","Y","Z"] = Field(default="Z", description="坐标轴:X、Y 或 Z")
    from_: Optional[float] = Field(
        default=-100000, alias="from", description="坐标轴起始值"
    )
    to: Optional[float] = Field(default=100000, description="坐标轴结束值")
    inside_level: int = Field(default=8, description="内部尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    boundary_level: int = Field(default=11, description="边界尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,11=1.25*1.25*0.625,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )

ReservesCalculateParam

Bases: ParamModel

估值算量参数

Source code in dimine_python_sdk\lib\prospecting\models.py
188
189
190
191
192
193
194
class ReservesCalculateParam(ParamModel):
    """估值算量参数"""

    weight_field: str = Field(..., description="体重字段")
    default_weight: Optional[float] = Field(default=2.76, description="默认体重值")
    main_field: str = Field(..., description="主统计字段")
    other_fields: list[str] = Field(default_factory=list, description="其他统计字段列表")

SampleLengthCombineParam

Bases: ParamModel

样长组合参数

Source code in dimine_python_sdk\lib\prospecting\models.py
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
class SampleLengthCombineParam(ParamModel):
    """样长组合参数"""

    input_file: str = Field(..., description="输入dmg文件")
    combine_length: Optional[float] = Field(
        default=1, gt=0, description="组合长度(m),必须大于 0"
    )
    combine_percent: Optional[float] = Field(
        default=0.75,
        ge=0,
        le=1,
        description="组合百分比,0-1 之间(传给 C++ 前会 ×100 取整)",
    )
    output_file: Optional[str] = Field(
        default=None,
        description="输出dmg文件(未设置时默认为 {input_file stem}_combined.dmg)",
    )

StepCombineParam

Bases: ParamModel

台阶组合参数

Source code in dimine_python_sdk\lib\prospecting\models.py
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
class StepCombineParam(ParamModel):
    """台阶组合参数"""

    input_file: str = Field(..., description="输入dmg文件")
    step_height: Optional[float] = Field(default=2, description="台阶高度")
    start_height: float = Field(..., description="开始高程")
    end_height: float = Field(..., description="结束高程")
    calculate_model: Optional[int] = Field(
        default=1, description="计算方式:0-算术平均,1-长度加权平均"
    )
    low_dip: Optional[float] = Field(
        default=0, description="忽略的最小倾角,即忽略倾角小于等于正负该值的钻孔"
    )
    output_file: Optional[str] = Field(
        default=None,
        description="输出dmg文件(未设置时默认为 {input_file stem}_step.dmg)",
    )

ThresholdConstraint

Bases: ParamModel

阈值约束 (type=2):基于属性值比较的约束

Source code in dimine_python_sdk\lib\prospecting\models.py
89
90
91
92
93
94
95
96
97
98
99
class ThresholdConstraint(ParamModel):
    """阈值约束 (type=2):基于属性值比较的约束"""

    type: Literal[2] = Field(default=2, description="阈值约束类型")
    attribute: str = Field(..., description="属性字段名称(如 CU)")
    compare: str = Field(default="等于", description="比较运算符:等于、大于、大于等于、小于、小于等于、不等于")
    value: str = Field(..., description="属性值(阈值)")
    is_numeric: bool = Field(default=True, description="是否为数值类型")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )

XPlaneConstraint

Bases: ParamModel

X 平面约束 (type=5):基于 X 坐标值的上部/下部约束,一种特殊的平面约束

Source code in dimine_python_sdk\lib\prospecting\models.py
136
137
138
139
140
141
142
143
144
145
146
class XPlaneConstraint(ParamModel):
    """X 平面约束 (type=5):基于 X 坐标值的上部/下部约束,一种特殊的平面约束"""

    type: Literal[5] = Field(default=5, description="X平面约束类型")
    x: float = Field(..., description="X 坐标值")
    range: int = Field(default=0, description="约束范围,0=上部,1=下部")
    inside_level: int = Field(default=8, description="内部尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    boundary_level: int = Field(default=11, description="边界尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,11=1.25*1.25*0.625,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )

YPlaneConstraint

Bases: ParamModel

Y 平面约束 (type=6):基于 Y 坐标值的上部/下部约束,一种特殊的平面约束

Source code in dimine_python_sdk\lib\prospecting\models.py
149
150
151
152
153
154
155
156
157
158
159
class YPlaneConstraint(ParamModel):
    """Y 平面约束 (type=6):基于 Y 坐标值的上部/下部约束,一种特殊的平面约束"""

    type: Literal[6] = Field(default=6, description="约束类型")
    y: float = Field(..., description="Y 坐标值")
    range: int = Field(default=0, description="约束范围,0=上部,1=下部")
    inside_level: int = Field(default=8, description="内部尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    boundary_level: int = Field(default=11, description="边界尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,11=1.25*1.25*0.625,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )

ZPlaneConstraint

Bases: ParamModel

Z 平面约束 (type=7):基于 Z 坐标值(高程)的上部/下部约束,一种特殊的平面约束

Source code in dimine_python_sdk\lib\prospecting\models.py
162
163
164
165
166
167
168
169
170
171
172
class ZPlaneConstraint(ParamModel):
    """Z 平面约束 (type=7):基于 Z 坐标值(高程)的上部/下部约束,一种特殊的平面约束"""

    type: Literal[7] = Field(default=7, description="约束类型")
    z: float = Field(..., description="Z 坐标值(高程)")
    range: int = Field(default=0, description="约束范围,0=上部,1=下部")
    inside_level: int = Field(default=8, description="内部尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    boundary_level: int = Field(default=11, description="边界尺寸层级,0=2560*2560*1280,1=1280*1280*640,2=640*640*320,...,10=2.5*2.5*1.25,11=1.25*1.25*0.625,...,13=0.3125*0.3125*0.15625 每增加一个层级,每个边在前一个等级基础上除以2,以此类推")
    bool_operate: str = Field(
        default="and", description='布尔运算符,"and" 或 "or"'
    )