dimine-python-sdk 0.2.4__py3-none-any.whl → 0.2.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dimine_python_sdk/__init__.py +1 -1
- dimine_python_sdk/docs/guides/lib/io/dmd_file.md +198 -196
- dimine_python_sdk/docs/guides/lib/io/dmg_file.md +196 -192
- dimine_python_sdk/logger.py +1 -1
- dimine_python_sdk/site/guides/lib/io/dmd_file.html +7 -4
- dimine_python_sdk/site/guides/lib/io/dmg_file.html +11 -5
- dimine_python_sdk/site/search/search_index.json +1 -1
- dimine_python_sdk/site/sitemap.xml +84 -84
- dimine_python_sdk/site/sitemap.xml.gz +0 -0
- {dimine_python_sdk-0.2.4.dist-info → dimine_python_sdk-0.2.5.dist-info}/METADATA +1 -1
- {dimine_python_sdk-0.2.4.dist-info → dimine_python_sdk-0.2.5.dist-info}/RECORD +14 -14
- {dimine_python_sdk-0.2.4.dist-info → dimine_python_sdk-0.2.5.dist-info}/WHEEL +0 -0
- {dimine_python_sdk-0.2.4.dist-info → dimine_python_sdk-0.2.5.dist-info}/entry_points.txt +0 -0
- {dimine_python_sdk-0.2.4.dist-info → dimine_python_sdk-0.2.5.dist-info}/top_level.txt +0 -0
dimine_python_sdk/__init__.py
CHANGED
|
@@ -4,7 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
6
|
DOCS_PATH = Path(__file__).parent / "docs"
|
|
7
|
-
__VERSION__ = "0.2.
|
|
7
|
+
__VERSION__ = "0.2.5" # 由 build.bat 中的 generate_version.py 自动更新
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
_LAZY_IMPORTS: dict[str, Any] = {}
|
|
@@ -1,196 +1,198 @@
|
|
|
1
|
-
# DMD 钻孔数据库文件
|
|
2
|
-
|
|
3
|
-
`dimine_python_sdk.lib.io` 提供 `DmdFile` 类用于读写 Dimine 钻孔数据库文件(`.dmd`)。DMD 是钻孔数据库的主引用文件,内部引用孔口表、测斜表、岩性表、样品表及扩展表的 `.dmt` 子表文件。API 将各表映射为 `pandas.DataFrame`,支持加载、修改、保存全流程操作。
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 一、加载与保存
|
|
8
|
-
|
|
9
|
-
### 从文件加载
|
|
10
|
-
|
|
11
|
-
```python
|
|
12
|
-
from dimine_python_sdk.lib.io import DmdFile
|
|
13
|
-
|
|
14
|
-
dmd = DmdFile("钻孔数据.dmd")
|
|
15
|
-
print(dmd.collar.head())
|
|
16
|
-
print(dmd.info)
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### 保存到文件
|
|
20
|
-
|
|
21
|
-
```python
|
|
22
|
-
dmd.collar = modified_collar_df
|
|
23
|
-
dmd.save() # 覆盖原文件
|
|
24
|
-
dmd.save("output.dmd") # 另存为新文件
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### 创建空文件并保存
|
|
28
|
-
|
|
29
|
-
```python
|
|
30
|
-
dmd = DmdFile() # 空构造,可直接设表
|
|
31
|
-
dmd.collar = collar_df
|
|
32
|
-
dmd.survey = survey_df
|
|
33
|
-
dmd.lithology = lithology_df
|
|
34
|
-
dmd.sample = sample_df
|
|
35
|
-
dmd.save("新钻孔数据.dmd")
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### 上下文管理器
|
|
39
|
-
|
|
40
|
-
```python
|
|
41
|
-
from dimine_python_sdk.lib.io import dmd_conn
|
|
42
|
-
|
|
43
|
-
with dmd_conn("钻孔数据.dmd") as dmd:
|
|
44
|
-
print(dmd.info)
|
|
45
|
-
dmd.sample["CU"] = dmd.sample["CU"] * 1.1
|
|
46
|
-
dmd.save()
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## 二、核心表访问
|
|
52
|
-
|
|
53
|
-
DMD 文件包含四张核心表,均以 `pd.DataFrame` 形式读写:
|
|
54
|
-
|
|
55
|
-
### 孔口表(collar)
|
|
56
|
-
|
|
57
|
-
```python
|
|
58
|
-
dmd.collar.head()
|
|
59
|
-
# 工程号 横坐标 纵坐标 高程 勘探线 工程类型
|
|
60
|
-
# 0 ZK001 1000.0 2000.0 500.0 L1 坑内钻
|
|
61
|
-
|
|
62
|
-
dmd.collar = new_collar_df # 替换整个表(自动校验列名)
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### 测斜表(survey)
|
|
66
|
-
|
|
67
|
-
```python
|
|
68
|
-
dmd.survey.head()
|
|
69
|
-
# 工程号 测斜深度 方位角 倾角
|
|
70
|
-
# 0 ZK001 0.0 45.0 90.0
|
|
71
|
-
|
|
72
|
-
dmd.survey = new_survey_df
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### 岩性表(lithology)
|
|
76
|
-
|
|
77
|
-
```python
|
|
78
|
-
dmd.lithology.head()
|
|
79
|
-
# 工程号 起始 结束 岩性编号
|
|
80
|
-
# 0 ZK001 0.0 10.0 花岗岩
|
|
81
|
-
|
|
82
|
-
dmd.lithology = new_lithology_df
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### 样品表(sample)
|
|
86
|
-
|
|
87
|
-
```python
|
|
88
|
-
dmd.sample.head()
|
|
89
|
-
# 工程号 样本编号 起始 结束 样长 CU
|
|
90
|
-
# 0 ZK001 S001 0.0 2.0 2.0 0.85
|
|
91
|
-
|
|
92
|
-
dmd.sample = new_sample_df
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
> **列名规范**:各表有必需的标准中文列名(孔口表需含 `工程号、横坐标、纵坐标、高程`,测斜表需含 `工程号、测斜深度、方位角、倾角` 等)。设置表数据时自动校验,缺列会抛出 `DmdError`。详细列名映射见 [钻孔数据库操作指南](../prospecting/drill_db.md#13-standard-column-mapping)。
|
|
96
|
-
|
|
97
|
-
### 统一表访问
|
|
98
|
-
|
|
99
|
-
```python
|
|
100
|
-
dmd["collar"] # 等价于 dmd.collar
|
|
101
|
-
dmd["survey"] # 等价于 dmd.survey
|
|
102
|
-
dmd["lithology"] # 等价于 dmd.lithology
|
|
103
|
-
dmd["sample"] # 等价于 dmd.sample
|
|
104
|
-
|
|
105
|
-
"collar" in dmd # True
|
|
106
|
-
len(dmd) # 表总数(含扩展表)
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## 三、扩展表
|
|
112
|
-
|
|
113
|
-
DMD 支持附加自定义扩展表(如分层表),以 `NativeExtendTable` 形式管理:
|
|
114
|
-
|
|
115
|
-
```python
|
|
116
|
-
# 查看扩展表
|
|
117
|
-
for ext in dmd.extend_tables:
|
|
118
|
-
print(ext.table_name, ext.dmt_filename)
|
|
119
|
-
print(ext.df.head())
|
|
120
|
-
|
|
121
|
-
# 通过表名访问扩展表数据
|
|
122
|
-
ext_df = dmd["分层表"]
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
扩展表通过 `dmt_filename` 参数指定文件名(如 `分层表.dmt`),在 DMD 保存时一并写入伴随的 `.dmt` 文件。
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## 四、文件信息
|
|
130
|
-
|
|
131
|
-
```python
|
|
132
|
-
dmd.name # "钻孔数据" — 文件名(不含扩展名)
|
|
133
|
-
dmd.file_path # "钻孔数据.dmd"
|
|
134
|
-
dmd.table_names # ["collar", "survey", "lithology", "sample", "分层表"]
|
|
135
|
-
dmd.ref_dict # .dmd 引用字典(只读)
|
|
136
|
-
|
|
137
|
-
dmd.info
|
|
138
|
-
# {
|
|
139
|
-
# "file": "钻孔数据.dmd",
|
|
140
|
-
# "name": "钻孔数据",
|
|
141
|
-
# "loaded": True,
|
|
142
|
-
# "tables": {
|
|
143
|
-
# "collar": {"columns": [...], "rows": 150},
|
|
144
|
-
# "survey": {"columns": [...], "rows": 300},
|
|
145
|
-
# "lithology": {"columns": [...], "rows": 80},
|
|
146
|
-
# "sample": {"columns": [...], "rows": 450},
|
|
147
|
-
# },
|
|
148
|
-
# "extend_table_count": 1,
|
|
149
|
-
# "extend_table_names": ["分层表"],
|
|
150
|
-
# "extend_tables": [...],
|
|
151
|
-
# }
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 五、保存为 DMG
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
```
|
|
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
|
-
- [
|
|
1
|
+
# DMD 钻孔数据库文件
|
|
2
|
+
|
|
3
|
+
`dimine_python_sdk.lib.io` 提供 `DmdFile` 类用于读写 Dimine 钻孔数据库文件(`.dmd`)。DMD 是钻孔数据库的主引用文件,内部引用孔口表、测斜表、岩性表、样品表及扩展表的 `.dmt` 子表文件。API 将各表映射为 `pandas.DataFrame`,支持加载、修改、保存全流程操作。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 一、加载与保存
|
|
8
|
+
|
|
9
|
+
### 从文件加载
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from dimine_python_sdk.lib.io import DmdFile
|
|
13
|
+
|
|
14
|
+
dmd = DmdFile("钻孔数据.dmd")
|
|
15
|
+
print(dmd.collar.head())
|
|
16
|
+
print(dmd.info)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 保存到文件
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
dmd.collar = modified_collar_df
|
|
23
|
+
dmd.save() # 覆盖原文件
|
|
24
|
+
dmd.save("output.dmd") # 另存为新文件
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 创建空文件并保存
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
dmd = DmdFile() # 空构造,可直接设表
|
|
31
|
+
dmd.collar = collar_df
|
|
32
|
+
dmd.survey = survey_df
|
|
33
|
+
dmd.lithology = lithology_df
|
|
34
|
+
dmd.sample = sample_df
|
|
35
|
+
dmd.save("新钻孔数据.dmd")
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 上下文管理器
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from dimine_python_sdk.lib.io import dmd_conn
|
|
42
|
+
|
|
43
|
+
with dmd_conn("钻孔数据.dmd") as dmd:
|
|
44
|
+
print(dmd.info)
|
|
45
|
+
dmd.sample["CU"] = dmd.sample["CU"] * 1.1
|
|
46
|
+
dmd.save()
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 二、核心表访问
|
|
52
|
+
|
|
53
|
+
DMD 文件包含四张核心表,均以 `pd.DataFrame` 形式读写:
|
|
54
|
+
|
|
55
|
+
### 孔口表(collar)
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
dmd.collar.head()
|
|
59
|
+
# 工程号 横坐标 纵坐标 高程 勘探线 工程类型
|
|
60
|
+
# 0 ZK001 1000.0 2000.0 500.0 L1 坑内钻
|
|
61
|
+
|
|
62
|
+
dmd.collar = new_collar_df # 替换整个表(自动校验列名)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 测斜表(survey)
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
dmd.survey.head()
|
|
69
|
+
# 工程号 测斜深度 方位角 倾角
|
|
70
|
+
# 0 ZK001 0.0 45.0 90.0
|
|
71
|
+
|
|
72
|
+
dmd.survey = new_survey_df
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 岩性表(lithology)
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
dmd.lithology.head()
|
|
79
|
+
# 工程号 起始 结束 岩性编号
|
|
80
|
+
# 0 ZK001 0.0 10.0 花岗岩
|
|
81
|
+
|
|
82
|
+
dmd.lithology = new_lithology_df
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 样品表(sample)
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
dmd.sample.head()
|
|
89
|
+
# 工程号 样本编号 起始 结束 样长 CU
|
|
90
|
+
# 0 ZK001 S001 0.0 2.0 2.0 0.85
|
|
91
|
+
|
|
92
|
+
dmd.sample = new_sample_df
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
> **列名规范**:各表有必需的标准中文列名(孔口表需含 `工程号、横坐标、纵坐标、高程`,测斜表需含 `工程号、测斜深度、方位角、倾角` 等)。设置表数据时自动校验,缺列会抛出 `DmdError`。详细列名映射见 [钻孔数据库操作指南](../prospecting/drill_db.md#13-standard-column-mapping)。
|
|
96
|
+
|
|
97
|
+
### 统一表访问
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
dmd["collar"] # 等价于 dmd.collar
|
|
101
|
+
dmd["survey"] # 等价于 dmd.survey
|
|
102
|
+
dmd["lithology"] # 等价于 dmd.lithology
|
|
103
|
+
dmd["sample"] # 等价于 dmd.sample
|
|
104
|
+
|
|
105
|
+
"collar" in dmd # True
|
|
106
|
+
len(dmd) # 表总数(含扩展表)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 三、扩展表
|
|
112
|
+
|
|
113
|
+
DMD 支持附加自定义扩展表(如分层表),以 `NativeExtendTable` 形式管理:
|
|
114
|
+
|
|
115
|
+
```python
|
|
116
|
+
# 查看扩展表
|
|
117
|
+
for ext in dmd.extend_tables:
|
|
118
|
+
print(ext.table_name, ext.dmt_filename)
|
|
119
|
+
print(ext.df.head())
|
|
120
|
+
|
|
121
|
+
# 通过表名访问扩展表数据
|
|
122
|
+
ext_df = dmd["分层表"]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
扩展表通过 `dmt_filename` 参数指定文件名(如 `分层表.dmt`),在 DMD 保存时一并写入伴随的 `.dmt` 文件。
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 四、文件信息
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
dmd.name # "钻孔数据" — 文件名(不含扩展名)
|
|
133
|
+
dmd.file_path # "钻孔数据.dmd"
|
|
134
|
+
dmd.table_names # ["collar", "survey", "lithology", "sample", "分层表"]
|
|
135
|
+
dmd.ref_dict # .dmd 引用字典(只读)
|
|
136
|
+
|
|
137
|
+
dmd.info
|
|
138
|
+
# {
|
|
139
|
+
# "file": "钻孔数据.dmd",
|
|
140
|
+
# "name": "钻孔数据",
|
|
141
|
+
# "loaded": True,
|
|
142
|
+
# "tables": {
|
|
143
|
+
# "collar": {"columns": [...], "rows": 150},
|
|
144
|
+
# "survey": {"columns": [...], "rows": 300},
|
|
145
|
+
# "lithology": {"columns": [...], "rows": 80},
|
|
146
|
+
# "sample": {"columns": [...], "rows": 450},
|
|
147
|
+
# },
|
|
148
|
+
# "extend_table_count": 1,
|
|
149
|
+
# "extend_table_names": ["分层表"],
|
|
150
|
+
# "extend_tables": [...],
|
|
151
|
+
# }
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 五、保存为 DMG(可选)
|
|
157
|
+
|
|
158
|
+
> **注意**:`.dmd` 文件可以直接在 Dimine 中打开并展示三维钻孔,无需转换。DMG 是另一种可视化格式,适用于需要特殊展示效果的场景。
|
|
159
|
+
|
|
160
|
+
可将钻孔数据库打包为 DMG 格式:
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
dmd.save_as_dmg("output.dmg")
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
> 更多 DMG 操作见 [DMG 钻孔可视化指南](dmg_file.md)。
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 六、异常处理
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
from dimine_python_sdk.lib.io import DmdError, DmdLoadError, DmdSaveError
|
|
174
|
+
|
|
175
|
+
try:
|
|
176
|
+
dmd = DmdFile("not_exist.dmd")
|
|
177
|
+
except DmdLoadError as e:
|
|
178
|
+
print(f"加载失败: {e}")
|
|
179
|
+
|
|
180
|
+
try:
|
|
181
|
+
dmd = DmdFile()
|
|
182
|
+
dmd.save() # 未指定路径
|
|
183
|
+
except DmdSaveError as e:
|
|
184
|
+
print(f"保存失败: {e}")
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
异常层次:
|
|
188
|
+
- `DmdError(RuntimeError)` — 基类
|
|
189
|
+
- `DmdLoadError(DmdError)` — 加载失败
|
|
190
|
+
- `DmdSaveError(DmdError)` — 保存失败
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 参考链接
|
|
195
|
+
|
|
196
|
+
- [钻孔数据库操作指南](../prospecting/drill_db.md) — 完整的钻孔数据库使用场景(CSV 导入、列名映射、组合样、特高品位处理)
|
|
197
|
+
- [DMG 钻孔可视化](dmg_file.md) — 将 DMD 转为三维可视化格式
|
|
198
|
+
- [API 参考:dmd_file](../../../reference/lib/io/dmd_file.md)
|