modules.geoDataProcess 模块帮助
本章节包含 modules.geoDataProcess 中与地质 / 钻孔数据处理相关的模块说明,例如地层编号补齐、按地层编号排序、钻孔类型 KCAD 映射等。
MapBoreTypeToKCAD
模块简介与适用场景
MapBoreTypeToKCAD将钻孔一览表中的「钻孔类型」字段值映射为 KCAD(AutoCAD/中望CAD出图插件)所使用的标准钻孔类型名称。映射关系并非写死在代码里,而是通过 GDIM API 按当前 项目 ID 拉取:键一般为业务表中原有的钻孔类型,值为平台返回的 KCAD 选项名称(若某名称在映射中不存在,pandas
Series.map会得到缺失值)。**输入形态**可以是:
TableCollection:在集合中按配置的表名查找钻孔表(默认内部表名bore_table),只改写该表中指定列;单张
TableData:整张表即为钻孔一览表,按列名改写bore_type_field。
典型适用场景:
钻孔布置图、平面图等下游 KCAD / CAD 绘图流程要求钻孔类型枚举与标准一致;
项目在 GDIM 中维护了钻孔类型对照表,希望在 Pipeline 中自动同步为最新映射。
端口说明
输入端口 -
InputTables:TableCollection``(须包含配置的钻孔表)或带钻孔类型列的 ``TableData。 -InputToken:(token, proj_id, host)。若 Pipeline 已通过pipeline.update_gdim_state(token=..., proj_id=..., host=...)配置运行上下文,可不连接此端口,模块会从 Pipeline 自动取 token 与项目信息。输出端口 -
OutputTables:与输入同类;为 拷贝后 写回映射结果后的TableCollection或TableData。
当 InputTables 为空、或无法解析有效 token 时,OutputTables 为 None。
快速上手示例:单表映射
from gdisdk.modules import MapBoreTypeToKCAD
mapper = MapBoreTypeToKCAD(
mname="MapBoreTypes",
token="你的GDIM Token",
proj_id="你的GDIM项目ID",
bore_type_field="bore_type", # 列内部名或字段标题均可
)
mapper.InputTables = your_bore_table_data # TableData
mapper.execute()
out = mapper.OutputTables.data
快速上手示例:表集合中指定钻孔表
from gdisdk.modules import MapBoreTypeToKCAD
mapper = MapBoreTypeToKCAD(
mname="MapBoreTypes",
token="你的GDIM Token",
proj_id="你的GDIM项目ID",
bore_table_name="bore_table", # 集合内表名或表标题,与 get_table 约定一致
bore_type_field="bore_type", # 或字段标题(与列元数据 title 一致)
)
mapper.InputTables = your_table_collection
mapper.execute()
out_tables = mapper.OutputTables.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
构造时可直接赋给 |
|
|
|
仅 ``TableCollection`` 输入时有效:集合内钻孔表名称或标题。单 |
|
|
|
待映射列的字段内部名或字段标题,未找到时抛出 |
|
|
|
鉴权与平台地址。构造器若设置 |
行为与错误说明
钻孔类型列的值经
Series.map(mapping_dict)替换;映射表中没有的键会变成 pandas 中的缺失标记,请结合业务决定是否在前游清洗或使用fillna。TableCollection中找不到bore_table_name,或表中无法按内部名/标题解析bore_type_field时,抛出ValueError并给出可用表、字段名与字段标题等线索。
在 pipeline 中的使用方式
from gdisdk.pipeline import PipeLine
from gdisdk.modules import MapBoreTypeToKCAD
pipe = PipeLine(app_name="BoreCadPrep", app_title="钻孔类型映射示例")
pipe.update_gdim_state(token="...", proj_id="...", host=None)
mapper = MapBoreTypeToKCAD("MapKcadBoreTypes")
# bore_reader.OutputTables >> mapper.InputTables
pipe.add_module(mapper)
pipe.run()
更多信息
AddLayerNumberByStdLayerTable
模块简介与适用场景
AddLayerNumberByStdLayerTable是 GDIM 相关模块:当layer_table(地层表) 中没有layer_number(地层编号) 字段时,依据standard_layer_table(标准地层表) 的layer_number数据为layer_table补充layer_number列。模块会从 GDIM 模板(
pipeline.gdim_template或通过 token 拉取)中读取standard_layer_update.define_layer_fields,据此寻找layer_table与standard_layer_table的公共字段并进行 join。典型适用场景:
业务流程要求
layer_table必须包含layer_number字段,但项目数据缺失该列;标准地层配置使用 “autoGeneration” 自动确定地层字段时,需要为
layer_table回填layer_number。
端口说明
输入端口 -
InputTables:输入表集合(TableCollection,需包含layer_table与standard_layer_table) -InputToken:GDIM 访问 token 信息(Token;仅当 pipeline 未提供gdim_template/token 时需要)输出端口 -
OutputTables:输出表集合(TableCollection,其中layer_table将新增layer_number列)
快速上手示例:在 pipeline 中从 GDIM 读取并补齐地层编号
from gdisdk.pipeline.pipeline import PipeLine
from gdisdk.modules.readers import GdimTableReader
from gdisdk.modules.geoDataProcess import AddLayerNumberByStdLayerTable
pipe = PipeLine(app_name="AddLayerNumberDemo", app_title="补齐地层编号示例")
# 建议在 pipeline 上设置 token/proj_id(模块内部 get_token 会优先取 pipeline 的值)
pipe.update_gdim_state(token="你的GDIM Token", proj_id="你的GDIM项目ID")
read_tables = GdimTableReader("ReadTables")
read_tables.table_fields = ["layer_table", "standard_layer_table"]
add_layer_num = AddLayerNumberByStdLayerTable("AddLayerNum")
links = read_tables.OutputTables >> add_layer_num.InputTables
pipe.add_links(links)
pipe.run()
out_tables = add_layer_num.OutputTables.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
layer 表名/标题;不传则默认 |
|
|
|
新增的地层编号字段 name;不传则默认 |
|
|
|
新增字段 title;不传则默认 |
|
|
|
鉴权与项目定位信息;若未显式传入,模块会尝试从 pipeline 获取,也可通过输入端口 |
Note
输入集合必须包含
standard_layer_table,且其中必须有layer_number列。若 join 后存在缺失的
layer_number``(NaN),模块会抛出 ``ValueError指出第一条缺失的组合值。
更多信息
SortByLayerNumber
模块简介与适用场景
SortByLayerNumber用于按 “地层编号” 对表格进行排序,支持两类输入:TableData:直接对该表排序;TableCollection:对集合中指定的 layer 表排序(默认layer_table),并输出排序后的集合。
排序使用内部的
sort_layer_numbers逻辑,支持常见地层编号的自然排序规则(并可容忍部分非标准值)。典型适用场景:
绘图/剖面/汇总前需要确保 layer 表按地层编号有序;
数据导出前统一层序顺序。
端口说明
输入端口 -
InputTable:输入数据(TableData或TableCollection)输出端口 -
OutputTable:排序后的数据(TableData或TableCollection;与输入类型一致)
快速上手示例:排序单张 layer 表
from gdisdk.dataclass.tables import TableData
from gdisdk.modules.geoDataProcess import SortByLayerNumber
table = TableData({"layer_number": ["2-1", "10-1", "1-3"], "v": [1, 2, 3]})
sort_mod = SortByLayerNumber("Sort")
sort_mod.InputTable = table
sort_mod.order = "ascending"
out = sort_mod.execute()
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
升序/降序。 |
|
|
|
当输入为 |
|
|
|
地层编号列名/标题;不传默认 |
Note
当找不到地层编号列时,模块会发出 warning 并返回原表(不强制报错)。
在 pipeline 中的使用方式
from gdisdk.pipeline.pipeline import PipeLine
from gdisdk.modules.readers import GdimTableReader
from gdisdk.modules.geoDataProcess import SortByLayerNumber
pipe = PipeLine(app_name="SortLayerDemo", app_title="地层编号排序示例")
read_tables = GdimTableReader("ReadTables")
read_tables.table_fields = ["layer_table"]
sort_layer = SortByLayerNumber("SortLayer")
sort_layer.order = "ascending"
links = read_tables.OutputTable >> sort_layer.InputTable
pipe.add_links(links)
pipe.run()
更多信息