modules.readers 模块帮助
本章节包含 modules.readers 包中常用「数据读取」模块的使用说明和示例,例如:
Excel / CSV / 文本 / 数据库 等不同数据源的读取模块
针对 GDIM 或特定业务格式的专用读取模块(含数字模型结构读取、项目表数据读取等)
CsvReader
模块简介与适用场景
CsvReader用于读取.csv文件,支持本地路径或 GDIM 文件描述(dict)。可输出表格数据(
OutputTable),也可从多行表头生成供 LLM 使用的列 schema 文本(OutputSchema)。典型适用场景:
将外部导出的 CSV(如仪器数据、统计结果、第三方表格)作为 Pipeline 的数据源;
在 GDIM 前端选择 CSV 文件后直接读取;
CSV 前几行含字段名、说明、单位等多行表头时,生成结构化 schema 供
PromptTemplate等模块使用。
端口说明
输入端口 - (无):该模块主要通过参数
file/sep/encoding等提供输入配置;其中file可为本地路径,也可为 GDIM 文件服务文件描述dict输出端口 -
OutputTable:读取到的表格(TableData);output_mode为"table"或"both"时写入 -OutputSchema:列 schema 的ResultModel``(纯文本,**不是** ``TableData);output_mode为"schema"或"both"时写入。格式与用法见下文「schema 输出格式说明」
快速上手示例:读取 CSV 表格
from gdisdk.modules.readers import CsvReader
reader = CsvReader(mname="ReadCsv")
reader.file = "example.csv"
reader.sep = "," # 分隔符,默认 ","
reader.encoding = "auto" # 自动识别编码(推荐用于中文 CSV)
reader.output_mode = "table"
reader.execute()
table = reader.OutputTable.data
df = table.dataframe # 如需 pandas DataFrame,可从 TableData 取出
快速上手示例:读取 CSV schema
from gdisdk.modules.readers import CsvReader
reader = CsvReader(mname="ReadCsvSchema")
reader.file = "example.csv"
reader.output_mode = "schema"
reader.name_row = 0 # 第 1 行是字段名
reader.description_row = 1 # 第 2 行是字段说明;如果没有说明行可设为 None
reader.unit_row = 2 # 第 3 行是物理单位;如果没有单位行可设为 None
reader.schema_field_name = "fields"
reader.execute()
schema = reader.OutputSchema.data
schema_text = schema.fields # 纯文本,可直接用于提示词占位符 {fields}
# 输出示例:
# Table: example
# Fields:
# - 孔号: 钻孔编号
# - 深度: 钻孔深度 [m]
# - 孔压: 孔隙水压力 [kPa]
快速上手示例:读取 GDIM 文件服务上的 CSV
from gdisdk.modules.readers import CsvReader
# gdim_file 一般由 GDIM 前端文件选择器或上游模块直接提供
# 不建议手写这个 dict;应直接使用平台返回的完整文件描述
gdim_file = {
"success": True,
"fileId": "your-file-id",
"fileUrl": "/minio/preview/your-file-id",
"originalFilename": "监测数据.csv",
"filename": "monitor.csv",
"size": 1024,
"contentType": "text/csv",
"objectId": None,
"objectType": None,
"message": None,
"thFileUrl": None,
"thFilename": None,
"thSize": None,
"downloadUrl": "/minio/download/your-file-id",
"host": "https://your-gdim-host/api/",
}
reader = CsvReader(mname="ReadCsvFromGdimFile")
reader.file = gdim_file
reader.encoding = "auto"
reader.output_mode = "table"
reader.execute()
table = reader.OutputTable.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
CSV 文件来源。传本地路径时直接读取本机文件;传 |
|
|
|
分隔符(如 |
|
|
|
文件编码; |
|
|
|
表头行配置: |
|
|
|
指定作为索引的列。 |
|
|
|
只读取指定列(可用列序号或列名)。 |
|
|
|
指定数据类型(可为单一类型或按列指定类型字典),用于避免类型推断误差。 |
|
|
|
跳过行:可为跳过前 N 行的 |
|
|
|
读取行数上限(用于大文件抽样/加速)。 |
|
|
|
额外识别为缺失值的字符串(支持按列指定)。 |
|
|
|
控制输出模式: |
|
|
|
读取 schema 时,字段名所在的原始 CSV 行号(从 0 开始计数)。仅在输出 |
|
|
|
读取 schema 时,字段说明所在的原始 CSV 行号(从 0 开始计数);若 CSV 没有说明行,设为 |
|
|
|
读取 schema 时,各列物理单位所在的原始 CSV 行号(从 0 开始计数),默认第三行;无单位行、或行号超出文件时可设为 |
|
|
|
是否校验单位字符串与 |
|
|
|
|
schema 输出格式说明
OutputSchema输出的是一个ResultModel实例(内部为单字段 PydanticBaseModel),不是TableData,也不包含 CSV 数据行本身。模型仅有一个字符串字段,字段名等于
schema_field_name``(默认 ``"fields"),值为可直接注入提示词的纯文本摘要。典型用法:将
OutputSchema连到PromptTemplate.InputValues,使模板中的{fields}``(或与 ``schema_field_name同名的占位符)自动填入列说明。文本格式大致如下:
Table: <文件名(不含扩展名)>
Fields:
- <字段名>: <字段说明> [<单位>]
- <字段名>: <字段说明>
- <字段名>
各部分的来源:
Table: ...:取自 CSV 文件名(stem);字段名:来自
name_row对应行的各列单元格;字段说明:来自
description_row;若该行不存在或description_row=None,则只输出- 字段名;单位:来自
unit_row,以方括号附在字段行末尾,如[m]、[kPa]。
如果某列没有对应说明,则仅输出字段名(及可选的单位标注)。
当
description_row超出文件行数或设为None时,模块仍会输出字段名列表,但不附带字段说明。当配置了
unit_row且该行存在有效单元格时,字段行会在 schema 中附带单位方括号,例如- depth: 钻孔深度 [m]。check_units=True``(默认)时只接受能匹配 ``Units的单位,未知单位会发出GDIDataQualityWarning并省略该列单位;check_units=False时不校验,非空单位按原字符串写入方括号(如[my unit])。
上传 GDIM 前检查
是否需要特别处理:当读取的 CSV 文件需要由 GDIM 前端上传、选择或在平台运行时提供时,是。
必须检查:
不要再依赖本机绝对路径或仅本地存在的相对路径;上传后的推荐方式是由前端传入 GDIM 文件描述,并直接赋给
file;模板建议通过 pipeline attribute + 前端传入的 GDIM 文件描述(``dict``) 提供,这是上传后的推荐方式。
建议检查:
encoding优先设为"auto",减少中文 CSV 编码不一致导致的读取失败;
若遗漏,常见现象:
本地调试可正常读取固定路径文件,但上传 GDIM 后报“文件不存在”;
文件能下载,但因编码出现乱码。
在 pipeline 中的使用方式
from gdisdk.pipeline import PipeLine
from gdisdk.modules.readers import CsvReader
pipeline = PipeLine(app_name="ReadCsvDemo", app_title="读取CSV示例")
read_csv = CsvReader("ReadCsv")
read_csv.file = "example.csv"
read_csv.encoding = "auto"
read_csv.output_mode = "both"
read_csv.name_row = 0
read_csv.description_row = 1
pipeline.add_module(read_csv)
pipeline.run()
table = read_csv.OutputTable.data
schema = read_csv.OutputSchema.data
schema_text = schema.fields # 纯文本列 schema,可传给 PromptTemplate
更多信息
ExcelReader
模块简介与适用场景
ExcelReader用于读取.xlsx工作簿,支持本地路径或 GDIM 文件描述(dict)。可输出单张
TableData``(``OutputTable)、多张工作表的TableCollection``(``OutputTables),也可从表头行生成供 LLM 使用的列 schema 文本(OutputSchema)。典型适用场景:
将 GDIM 导出的 Excel 模板或第三方
.xlsx作为 Pipeline 数据源;在 GDIM 前端选择 Excel 文件后直接读取指定工作表或全部工作表;
工作表前几行含字段名、说明、单位等多行表头时,生成结构化 schema 供
PromptTemplate等模块使用;多工作表工作簿中手动配置主表/子表关系,供下游按层级处理。
格式限制:仅支持
.xlsx,不支持旧版.xls。GDIM 导出布局(常见):工作表前几行常为标题、字段名、单位等多行表头,按默认表头推断可能取错列名;
header与 schema 行号参数的配置见下文「参数说明」。多工作表时的 ``OutputTable``:当
sheet_name为列表或None时,OutputTable**始终**对应工作簿索引0的工作表,而非列表中的第一张;sheet_name与OutputTables的对应关系见「参数说明」。
端口说明
输入端口 - (无):该模块主要通过参数
file/sheet_name/header等提供输入配置;其中file可为本地路径,也可为 GDIM 文件服务文件描述dict输出端口 -
OutputTable:单张TableData;output_mode为"table"或"both"时写入,否则为None。file为None时也为None。 -OutputTables:多表TableCollection;output_mode为"table"或"both"时写入,否则为None。file为None时也为None。 -OutputSchema:列 schema 的ResultModel``(纯文本,**不是** ``TableData);output_mode为"schema"或"both"时写入,否则为None。file为None时也为None。格式与用法见下文「schema 输出格式说明」。
快速上手示例:读取单个工作表
from gdisdk.modules.readers import ExcelReader
reader = ExcelReader(mname="ReadExcel")
reader.file = "survey.xlsx"
reader.sheet_name = "钻孔一览表" # 也可用工作表索引,如 0
reader.header = 1 # GDIM 导出:第 2 行为字段名
reader.output_mode = "table"
reader.execute()
table = reader.OutputTable.data
df = table.dataframe
快速上手示例:读取多个工作表
from gdisdk.modules.readers import ExcelReader
reader = ExcelReader(mname="ReadExcelSheets")
reader.file = "survey.xlsx"
reader.sheet_name = ["钻孔一览表", "地层表"]
reader.header = 1
reader.table_relationship_mode = "manual"
reader.main_table = "钻孔一览表"
reader.sub_tables = ["地层表"]
reader.primary_key = "bore_number"
reader.execute()
collection = reader.OutputTables.data
first_sheet = reader.OutputTable.data # 始终是工作簿索引 0 的工作表
快速上手示例:读取 Excel schema
from gdisdk.modules.readers import ExcelReader
reader = ExcelReader(mname="ReadExcelSchema")
reader.file = "survey.xlsx"
reader.sheet_name = "钻孔一览表"
reader.output_mode = "schema"
reader.name_row = 1 # 第 2 行是字段名(GDIM 导出常见)
reader.description_row = 1 # 若无说明行可设为 None
reader.unit_row = 2 # 第 3 行是物理单位
reader.schema_field_name = "fields"
reader.execute()
schema = reader.OutputSchema.data
schema_text = schema.fields # 纯文本,可直接用于提示词占位符 {fields}
# 输出示例:
# Table: 钻孔一览表
# Fields:
# - bore_number: bore_number
# - design_bore_depth: design_bore_depth [m]
快速上手示例:读取 GDIM 文件服务上的 Excel
from gdisdk.modules.readers import ExcelReader
# gdim_file 一般由 GDIM 前端文件选择器或上游模块直接提供
gdim_file = {
"success": True,
"fileId": "your-file-id",
"originalFilename": "勘察数据.xlsx",
"filename": "survey.xlsx",
"downloadUrl": "/minio/download/your-file-id",
"host": "https://your-gdim-host/api/",
}
reader = ExcelReader(mname="ReadExcelFromGdim")
reader.file = gdim_file
reader.sheet_name = 0
reader.header = 1
reader.output_mode = "table"
reader.execute()
table = reader.OutputTable.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
Excel 文件来源。传本地路径时直接读取本机文件;传 |
|
|
|
要读取的工作表。 |
|
|
|
表头行配置: |
|
|
|
指定作为索引的列。 |
|
|
|
只读取指定列(可用列序号或列名)。 |
|
|
|
指定数据类型,约定与 |
|
|
|
跳过行:可为跳过前 N 行的 |
|
|
|
读取行数上限; |
|
|
|
额外识别为缺失值的字符串(支持按列指定)。 |
|
|
|
控制输出模式: |
|
|
|
读取 schema 时,字段名所在的原始工作表行号(从 0 开始)。仅在输出 |
|
|
|
读取 schema 时,字段说明所在的原始行号;若无说明行设为 |
|
|
|
读取 schema 时,各列物理单位所在的原始行号;无单位行可设为 |
|
|
|
是否校验单位与 |
|
|
|
|
|
|
|
多工作表时 |
|
|
|
主表工作表名或标题; |
|
|
|
子表工作表名或标题; |
|
|
|
主表与子表的关联列名。 |
schema 输出格式说明
OutputSchema输出的是一个ResultModel实例(内部为单字段 PydanticBaseModel),不是TableData,也不包含工作表数据行本身。模型仅有一个字符串字段,字段名等于
schema_field_name``(默认 ``"fields"),值为可直接注入提示词的纯文本摘要。典型用法:将
OutputSchema连到PromptTemplate.InputValues,使模板中的{fields}自动填入列说明。文本格式大致如下:
Table: <工作表名>
Fields:
- <字段名>: <字段说明> [<单位>]
- <字段名>: <字段说明>
- <字段名>
各部分的来源:
Table: ...:取自工作表名称(sheet_label);字段名:来自
name_row对应行的各列单元格;字段说明:来自
description_row;若该行不存在或description_row=None,则只输出- 字段名;单位:来自
unit_row,以方括号附在字段行末尾。
读取多个工作表时,各工作表的 schema 块之间以空行分隔。
当
name_row超出工作表行数时会抛出ValueError。
主子表关系说明
仅当
sheet_name读取到 两张及以上 工作表,且table_relationship_mode="manual"时生效。main_table、sub_tables可使用工作表 名称 或 **标题**(与TableData.title一致);模块内部会解析为TableData.name``(形如 ``excel_<工作表名>)。primary_key未指定时,取主表与每个子表之间的第一列公共列;若无公共列会抛出ValueError,需显式设置primary_key。未纳入主/子关系配置的工作表仍会加入
OutputTables,但不带层级元数据。
上传 GDIM 前检查
是否需要特别处理:当 Excel 文件需要由 GDIM 前端上传、选择或在平台运行时提供时,是。
必须检查:
使用
pipeline.add_attribute将file映射为 Pipeline 属性(param_name="file"),供 GDIM 前端上传或选择 Excel;平台运行时前端会传入 GDIM 文件描述dict,模块据此下载后读取;不要在
.pipe里写死本机绝对路径或仅本地存在的相对路径。
建议检查:
确认文件扩展名为
.xlsx``(不支持 ``.xls);本地调试可用
pipeline.set_attributes(file=...)预设测试文件,上传 GDIM 后以前端传入的值为准。
若遗漏,常见现象:
本地调试可正常读取固定路径文件,但上传 GDIM 后报”文件不存在”;
未将
file注册为 Pipeline 属性,GDIM 前端无法提供文件,模块file始终为None;
在 pipeline 中的使用方式
from gdisdk.pipeline import PipeLine
from gdisdk.modules.readers import ExcelReader
pipeline = PipeLine(app_name="ReadExcelDemo", app_title="读取Excel示例")
read_excel = ExcelReader("ReadExcel")
read_excel.sheet_name = ["钻孔一览表", "地层表"]
read_excel.header = 1
read_excel.output_mode = "both"
read_excel.name_row = 1
read_excel.unit_row = 2
read_excel.table_relationship_mode = "manual"
read_excel.main_table = "钻孔一览表"
read_excel.sub_tables = ["地层表"]
read_excel.primary_key = "bore_number"
pipeline.add_module(read_excel)
pipeline.add_attribute(
attr_name="file",
module_name="ReadExcel",
param_name="file",
attr_title="Excel 文件",
)
# 本地调试时预设测试文件;上传 GDIM 后由前端赋值
pipeline.set_attributes(file="survey.xlsx")
pipeline.run()
table = read_excel.OutputTable.data
collection = read_excel.OutputTables.data
schema_text = read_excel.OutputSchema.data.fields
更多信息
MdbReader
模块简介与适用场景
MdbReader读取 Microsoft Access.mdb文件,可将表数据输出为TableData/TableCollection,也可导出表结构 schema 文本供PromptTemplate等下游模块使用。典型适用场景:
将第三方或历史 Access 数据库作为 Pipeline 数据源(如勘察、档案类 MDB);
在 GDIM 前端上传 MDB 后读取指定表或全部表;
仅需表结构、主键及表间关系说明时,用
output_mode="schema"生成 LLM 可读的字段摘要,无需加载全量数据。
平台差异(重要):Windows 下通过 ODBC + Access COM 读取,可自动识别主子表关系并尽量补全字段/表描述;Linux 下通过
mdbtools读取表数据,OutputTables**不会**附带主子表层级,Schema 也可能缺少字段说明、主键与关系信息(会发出GDIDataQualityWarning)。需要完整元数据时建议在 Windows 环境运行。加密库:带密码的 MDB 必须设置
password,否则无法打开。
端口说明
输入端口 -
InputFile:MDB 文件路径或 GDIM 文件描述dict。若端口有数据,会覆盖模块参数file的值。输出端口 -
OutputTable:单张TableData;output_mode为"table"或"both"时写入。table_names仅含一张表时输出该表;否则输出 MDB 读取顺序中的第一张用户表。 -OutputTables:多表TableCollection;output_mode为"table"或"both"时写入。Windows 下会按 MDB 中的关系自动设置主表/子表。 -OutputSchema:表结构的ResultModel``(纯文本,**不是** ``TableData);output_mode为"schema"或"both"时写入。格式见下文「schema 输出格式说明」。
快速上手示例:读取 MDB 全部表
from gdisdk.modules.readers import MdbReader
reader = MdbReader(mname="ReadMdb")
reader.InputFile = "sample.mdb"
reader.output_mode = "table"
reader.execute()
tables = reader.OutputTables.data
first_table = reader.OutputTable.data # 读取顺序中的第一张用户表
快速上手示例:只读指定表与列
from gdisdk.modules.readers import MdbReader
reader = MdbReader(mname="ReadMdbPartial")
reader.InputFile = "sample.mdb"
reader.table_names = ["钻孔表", "地层表"]
reader.usecols = {
"钻孔表": ["孔号", "孔口高程"],
"地层表": ["层号", "岩土名称", "厚度"],
}
reader.nrows = 100 # 每个表最多读取 100 行
reader.skiprows = 0
reader.execute()
tables = reader.OutputTables.data
borehole = reader.OutputTable.data # table_names 有多张表时,OutputTable 为第一张
快速上手示例:导出 Schema 供 PromptTemplate 使用
from gdisdk.modules.readers import MdbReader
reader = MdbReader(mname="ReadMdbSchema")
reader.InputFile = "sample.mdb"
reader.table_names = ["钻孔表"]
reader.output_mode = "schema"
reader.include_sample_values = 3 # 每个字段附带最多 3 个 distinct 示例值
reader.schema_field_name = "fields"
reader.execute()
schema = reader.OutputSchema.data
schema_text = schema.fields # 纯文本,可传给 PromptTemplate 的 {fields}
快速上手示例:读取 GDIM 文件服务上的 MDB
from gdisdk.modules.readers import MdbReader
# gdim_file 一般由 GDIM 前端文件选择器或上游模块直接提供
gdim_file = {
"success": True,
"fileId": "your-file-id",
"originalFilename": "勘察数据.mdb",
"filename": "survey.mdb",
"downloadUrl": "/minio/download/your-file-id",
"host": "https://your-gdim-host/api/",
}
reader = MdbReader(mname="ReadMdbFromGdim")
reader.InputFile = gdim_file
reader.password = "your-mdb-password" # 加密库必填
reader.output_mode = "both"
reader.execute()
tables = reader.OutputTables.data
schema_text = reader.OutputSchema.data.fields
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
MDB 文件来源。传本地路径时直接读取本机文件;传 |
|
|
|
仅读取指定表;为 |
|
|
|
MDB 数据库访问密码。加密库必须提供正确密码才能读取。 |
|
|
|
仅读取部分列。 |
|
|
|
每个表最多读取的数据行数; |
|
|
|
每个表跳过开头的数据行数(在 |
|
|
|
控制输出模式: |
|
|
|
|
|
|
|
Schema 导出时每个字段附带的 distinct 示例值个数。 |
schema 输出格式说明
OutputSchema输出的是一个ResultModel实例(内部为单字段 PydanticBaseModel),不是TableData,也不包含 MDB 数据行本身。典型用法:将
OutputSchema连到PromptTemplate.InputValues,使模板中的{fields}``(或与 ``schema_field_name同名的占位符)自动填入表结构说明。单表示例格式大致如下:
Table: 钻孔表
Description: 钻孔基本信息
Primary key: 孔号
Fields:
- 孔号: 钻孔编号 [VARCHAR]
- 孔口高程: 孔口标高 [DOUBLE] (samples: 12.3, 15.0, 18.2)
- 孔深 [REAL, not null]
Relationships:
- child: 地层表 (join: 孔号 -> 孔号)
多表时,每个表块之间以空行分隔。
Windows 下字段说明、表描述、主键与关系信息较完整;Linux 下可能仅有字段名与类型,并可能缺少
Primary key/Relationships段落(见上文平台差异说明)。
读取行为说明
系统表(
MSys*、~开头)会被自动跳过,不会进入输出。Windows 下通过
Microsoft Access Driver (*.mdb, *.accdb)ODBC 驱动连接;Linux 下依赖mdbtools``(``mdb-export、mdb-schema等),服务器需已安装相应工具。Linux 下
nrows/skiprows在mdb-export导出全表后于内存中切片实现;大表抽样时 Windows 侧通常更高效。output_mode="schema"时不会读取表数据,适合仅需结构说明的场景。
上传 GDIM 前检查
是否需要特别处理:当 MDB 文件需要由 GDIM 前端上传、选择或在平台运行时提供时,是。
必须检查:
使用
pipeline.add_attribute将file映射为 Pipeline 属性(param_name="file"),供 GDIM 前端上传或选择 MDB;平台运行时前端会传入 GDIM 文件描述dict,模块据此下载后读取;不要在
.pipe里写死本机绝对路径或仅本地存在的相对路径。
建议检查:
加密 MDB 须配置
password;也可通过add_attribute一并暴露,便于前端填写;本地调试可用
pipeline.set_attributes(file=...)预设测试文件,上传 GDIM 后以前端传入的值为准。
若遗漏,常见现象:
本地调试可正常读取固定路径文件,但上传 GDIM 后报“文件不存在”;
未将
file注册为 Pipeline 属性,GDIM 前端无法提供文件,模块file始终为None;加密库未设密码导致 ODBC / mdbtools 连接失败。
在 pipeline 中的使用方式
from gdisdk.pipeline import PipeLine
from gdisdk.modules.readers import MdbReader
pipeline = PipeLine(app_name="ReadMdbDemo", app_title="读取MDB示例")
read_mdb = MdbReader("ReadMdb")
read_mdb.table_names = ["钻孔表"]
read_mdb.output_mode = "both"
read_mdb.include_sample_values = 2
pipeline.add_module(read_mdb)
pipeline.add_attribute(
attr_name="file",
module_name="ReadMdb",
param_name="file",
attr_title="MDB 文件",
)
# 本地调试时预设测试文件;上传 GDIM 后由前端赋值
pipeline.set_attributes(file="sample.mdb")
pipeline.run()
table = read_mdb.OutputTable.data
schema_text = read_mdb.OutputSchema.data.fields
更多信息
GdimTemplateReader
模块简介与适用场景
GdimTemplateReader按数字模型 ID(tpl_id)或项目 ID 读取 GDIM **数字模型结构**(不含表内业务数据),输出GdimTemplate。 平台界面称「数字模型」;SDK / API 仍沿用template命名,见 术语对照。与
GdimTableReader不同:本模块只返回表元数据、字段定义、主/子表关系等,用于对照内部 表名 / 字段名,或在代码中按数字模型动态生成读表、写表、校验逻辑。典型适用场景:
本地开发时打印某项目数字模型的表名、字段名与主/子表树;
根据数字模型结构动态配置
GdimTableReader.table_fields或 UI 下拉选项;需要程序化遍历全部表结构时(若只查单表的 name/title,也可直接用 GDIM 开发模式,不必运行本模块)。
端口说明
输入端口 -
InputToken:鉴权与项目定位信息(token, proj_id, host)。若 Pipeline 已通过pipeline.update_gdim_state(token=..., proj_id=..., host=...)配置gdim_state,模块会从 Pipeline 自动取 token(及项目、host 等),此时该端口可以不连接。若已设置tpl_id,则不强制要求proj_id。输出端口 -
OutputTemplate:数字模型结构(GdimTemplate);鉴权失败时为None
快速上手示例:按项目读取数字模型结构
from gdisdk.modules.readers import GdimTemplateReader
reader = GdimTemplateReader(mname="ReadTemplate")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.execute()
tpl = reader.OutputTemplate.data
# 按表标题取元数据,再查看内部表名与字段
bore_meta = tpl.get_table_metadata("勘探孔参数表")
print(bore_meta.name) # 例如 bore_table
print(list(bore_meta.fields_metadata.keys())) # 字段内部名列表
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
数字模型 ID(API 参数名仍为 |
|
|
|
是否同时获取数字模型下的应用信息(写入 |
|
|
|
是否获取带主/子表关系的树形结构( |
|
|
|
构造参数形式的鉴权信息;文档示例推荐用 |
读取行为说明
若当前模块已挂在 Pipeline 上,且
pipeline.gdim_template已有缓存,则 优先复用 该缓存,不再请求远端。template_tree=True``(默认)走树形结构接口,便于使用 ``get_children/root_tables等关系查询;False时仅扁平元数据。输出数据结构与常用方法见 GdimTemplate。
在 pipeline 中的使用方式
from gdisdk.connectors import log_in
from gdisdk.pipeline import PipeLine
from gdisdk.modules.readers import GdimTemplateReader
pipeline = PipeLine(app_name="InspectTemplate", app_title="查看数字模型结构")
pipeline.update_gdim_state(
token=log_in(user_name="你的GDIM用户名", password="你的GDIM密码"),
proj_id="你的GDIM项目ID",
)
read_tpl = GdimTemplateReader("ReadTemplate")
# 也可改为按数字模型 ID 读取:read_tpl.tpl_id = "你的数字模型ID"
pipeline.add_module(read_tpl)
pipeline.run()
tpl = read_tpl.OutputTemplate.data
更多信息
:doc:`GDIM 开发模式 (Dev Mode) <gdim_dev_mode>`(页面上直接查看表名 / 字段名)
GdimTableReader
模块简介与适用场景
GdimTableReader从 GDIM 项目读取一个或多个数据表,输出TableCollection,并可指定其中一张表为TableData。输出
TableCollection时会基于 GDIM 数字模型自动识别主/子表关系;支持按表配置读取过滤(table_filters)、主表主键过滤(primary_key_value_filter)及行数上限(nrows)。过滤语法见下文「GDIM 读取过滤说明」。典型适用场景:
在 Pipeline 起点拉取业务表(如剖面、钻孔、地层等);
只读关键字段并在下游筛选、统计、绘图;
按主表主键或字段条件只拉取部分关联子表数据。
Hint
table_fields 等参数中的表、字段均可写 内部名(name) 或 显示标题(title)。
跨数字模型复用时建议优先用内部名;可在 GDIM 页面开启 开发模式
(网址后加 ?dev)直接查看,或用上文 GdimTemplateReader 批量读取数字模型结构。
端口说明
输入端口 -
InputToken:鉴权与项目定位信息(token, proj_id, host)。若 Pipeline 已通过pipeline.update_gdim_state(token=..., proj_id=..., host=...)配置gdim_state,模块会从 Pipeline 自动取 token(及项目、host 等),此时该端口可以不连接,否则由本端口传入。输出端口 -
OutputTables:读取到的多表集合(TableCollection) -OutputTable:从集合中选出的单表(TableData),由output_table_name指定
快速上手示例:读取指定表与字段
from gdisdk.modules.readers import GdimTableReader
# 最小可运行:通过 InputToken 提供鉴权信息(无需 Pipeline)
reader = GdimTableReader(mname="ReadTables")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
# 只读一张表的指定字段(key 可以写表名或表标题,value 可以写字段名或字段标题,系统会自动识别)
reader.table_fields = {
"剖面数据表": ["剖面编号", "x_coordinate", "y_coordinate"],
}
# 指定 OutputTable 要输出哪张表(未指定时默认取读取到的第一张表)
reader.output_table_name = "剖面数据表"
reader.execute()
one_table = reader.OutputTable.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
需要读取的表/字段配置。为 |
|
|
|
字段格式化配置(按表维度指定字段格式),用于在读取后对数据类型/格式进行统一处理。 |
|
|
|
按表配置高级读取过滤;键为表内部名或表标题。仅 |
|
|
|
|
|
|
|
按主表主键值过滤关联子表的快捷参数;与 |
|
|
|
每张表最多读取前 N 行;仅 |
|
|
|
是否保留输出表中的 |
|
|
|
输出 |
|
|
|
输出 |
|
|
|
输出 |
|
|
|
表/字段缺失时的处理策略:抛错、控制台警告、或在 GDIM 中以 |
|
|
|
读取到空表时的处理策略: |
|
|
|
当最终没有任何表进入集合时的输出行为(例如所有表均因 |
|
|
|
|
|
|
|
若数据平台为原老版本系统 GBIM,则设置该值为 |
|
|
|
构造函数中可直接传入鉴权信息: |
GDIM 读取过滤说明
table_filters、primary_key_value_filter 与 nrows 均仅 gdim=True 时生效。
``table_filters`` 结构(每张表一个过滤对象)
table_filters 的键为表内部名或表标题;值为 GdimTableReadFilter 或等价的 dict,支持以下三种条件(可组合):
字段 |
类型 |
说明 |
|---|---|---|
|
|
字段匹配(映射 API |
|
|
范围比较(映射 API |
|
|
嵌套逻辑组(映射 API |
过滤条件中的 field 可写字段内部名或字段标题。
常见 ``contains`` / ``ranges`` 示例
reader.table_filters = {
# 模糊匹配:钻孔编号包含 "ZK"
"勘探点表": {
"contains": [{"field": "钻孔编号", "value": "ZK"}],
},
# 精确匹配 + 范围
"地层表": {
"contains": [{"field": "层号", "value": "3", "exact": True}],
"ranges": [{"field": "厚度", "operator": "gte", "value": "1.5"}],
},
}
``filter_group`` 嵌套示例
reader.table_filters = {
"地层表": {
"filter_group": {
"logic": "or",
"ranges": [
{"field": "厚度", "operator": "gte", "value": "5"},
],
"children": [
{
"logic": "and",
"ranges": [
{"field": "岩土名称", "operator": "gte", "value": "A"},
{"field": "层号", "operator": "lte", "value": "10"},
],
},
],
},
},
}
``filter_template_variables`` 与 ``{tpl_*}`` 占位符
在 table_filters 的条件值中可使用 {tpl_变量名} 占位符;变量 UI Schema 与默认值在 filter_template_variables 中统一定义(变量名必须以 ``tpl_`` 开头)。同一占位符可在多张表、多个条件中复用;运行前可通过 reader.tpl_xxx = ... 赋值。
from gdisdk.modules.readers import GdimTableReader
from gdisdk.pipeline.pipeData import StringAttributeSchema
reader = GdimTableReader(mname="ReadWithTplFilter")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.table_fields = ["勘探点表"]
reader.filter_template_variables = {
"tpl_hole": StringAttributeSchema(title="钻孔编号", default="ZK1"),
}
reader.table_filters = {
"勘探点表": {
"contains": [{"field": "钻孔编号", "value": "{tpl_hole}"}],
},
}
reader.tpl_hole = "ZK2" # 运行前改值
reader.execute()
``primary_key_value_filter``(主表主键快捷过滤)
适用于「只读某一主表记录及其子表」的常见场景,比手写 table_filters 更简洁:
模块会自动在主表上生成主键字段的**精确匹配**(
contains+exact=True),并与该表已有的table_filters**合并**(条件追加,而非覆盖)。同时会为读取集合中的关联子表设置父表主键传参,只拉取对应父记录下的子表数据。
**单值**(
str/int/float)时,应用于读取集合内所有含子表的主表。**列表**(
list[str]/list[int]/list[float])时,按多个主键做 IN 过滤(子表走parentTablePrimaryKeyValues;若主表也在读取集合中,主表走filters.values)。**字典**时,键必须是**父表**(内部名或表标题),不能是正在读取的那张子表;值为对应主键取值(标量或列表)。只读子表、父表不在
table_fields里时,仍按父表名/标题作为键。多层嵌套时,键是被读子表的**直接父表**(该父表在数字模型里可能本身也是上一级的子表)。可直接传入
UIAttributeSchema/TemplateVariableConfig``(单值或 per-main-table 字典),在 GDIM UI 中生成控件,而不必使用 ``{tpl_*}占位符。空列表
[]视为未设置主键过滤。由 GDIM 前端通过 Pipeline 属性注入时(
auto_bind="pk_field"/"poi_field"),绑定方式与取值形态见 自动绑定属性(auto_bind)。
from gdisdk.modules.readers import GdimTableReader
from gdisdk.pipeline.pipeData import StringAttributeSchema
reader = GdimTableReader(mname="ReadByPk")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.table_fields = ["勘探点表", "地层表"]
# 方式 A:直接传值
reader.primary_key_value_filter = "ZK1"
# 方式 B:UI 控件(GDIM 前端可改)
# reader.primary_key_value_filter = StringAttributeSchema(
# title="钻孔编号", default="ZK1", selections=["ZK1", "ZK2"]
# )
# 方式 C:与 table_filters 合并(主表上追加精确匹配,子表仍按主键关联)
# reader.table_filters = {"勘探点表": {"contains": [{"field": "备注", "value": "有效"}]}}
# reader.primary_key_value_filter = "ZK1"
# 方式 D:多个主键
# reader.primary_key_value_filter = ["ZK1", "ZK2"]
reader.execute()
过滤选用建议
父子表「按主键只读一条记录及其子表」→ 优先
primary_key_value_filter。单表字段模糊/范围/复杂逻辑 →
table_filters。需要在 GDIM UI 中让用户改过滤值 →
filter_template_variables+{tpl_*},或primary_key_value_filter直接传UIAttributeSchema。需要 GDIM 前端自动注入(地图 POI 或子表主键)→ 见 自动绑定属性(auto_bind)。
空表处理说明
当
empty_error_type="warning"或"gdi_warning"时,空表会给出提示后被跳过,不会进入OutputTables。当
empty_error_type="create_empty_table"时,模块会使用该表的模板元数据生成一个空的TableData:表名、标题、描述、字段元数据仍会保留;
若表中存在
id列,后续仍会按keep_gdim_id的规则转换为gdim_id或删除;若
table_fields为dict,则会仅保留本次请求的字段,避免空表比正常读取多出未请求列。
若所有表均被跳过且集合为空,
all_empty_output决定最终输出是空TableCollection还是None。
快速上手示例:按主表主键读取关联子表
from gdisdk.modules.readers import GdimTableReader
reader = GdimTableReader(mname="ReadByPrimaryKey")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.table_fields = ["勘探点表", "地层表"]
reader.primary_key_value_filter = "ZK1"
reader.output_table_name = "地层表"
reader.execute()
layers = reader.OutputTable.data
快速上手示例:按字段条件过滤读取
from gdisdk.modules.readers import GdimTableReader
reader = GdimTableReader(mname="ReadWithFilter")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.table_fields = ["勘探点表"]
reader.table_filters = {
"勘探点表": {
"contains": [{"field": "钻孔编号", "value": "ZK"}],
},
}
reader.nrows = 100
reader.execute()
tables = reader.OutputTables.data
快速上手示例:空表时按模板生成空表
from gdisdk.modules.readers import GdimTableReader
reader = GdimTableReader(mname="ReadMaybeEmptyTable")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.empty_error_type = "create_empty_table"
reader.output_table_name = "地层表"
reader.table_fields = {
"地层表": ["层号", "岩土名称", "厚度"],
}
reader.execute()
table = reader.OutputTable.data
# 即使 GDIM 中这张表当前没有数据,仍会得到一个 0 行的 TableData,
# 并保留请求字段对应的 schema,便于后续模块继续运行。
在 pipeline 中的使用方式
from gdisdk.connectors import log_in
from gdisdk.pipeline import PipeLine
from gdisdk.modules.readers import GetGdimToken, GdimTableReader
pipeline = PipeLine(app_name="ReadGdimTables", app_title="读取GDIM表数据示例")
# 方式 A:在 Pipeline 上统一配置 GDIM 凭证(模块内部 get_token() 会优先使用 pipeline 的值)
pipeline.update_gdim_state(
token=log_in(user_name="你的GDIM用户名", password="你的GDIM密码"),
proj_id="你的GDIM项目ID",
)
read_tables = GdimTableReader("ReadTables")
read_tables.table_fields = ["剖面数据表", "钻孔表"]
read_tables.output_table_name = "剖面数据表"
pipeline.add_module(read_tables)
# 方式 B:用 GetGdimToken 输出到 InputToken(适合在 Pipeline 中统一鉴权/切换项目)
# get_token = GetGdimToken("GetToken", token="你的GDIM Token", proj_id="你的GDIM项目ID")
# links = get_token.OutputToken >> read_tables.InputToken
# pipe.add_links(links)
result = pipeline.run()
tables = read_tables.OutputTables.data
one_table = read_tables.OutputTable.data
更多信息
ReadGtbFile
模块简介与适用场景
ReadGtbFile读取ExportGdimTables导出的.gtb/.xlsx,重建为TableCollection,适用于「导出 → 本地/外部编辑 → 再读回 Pipeline」的流程。读取时会恢复模板 ID、表元数据、主/子表关系及坐标系(可通过
OutputCoordinateSystem输出)。工作表结构约定:第 1 行字段标题、第 2 行内部名、第 3 行单位、第 4 行起为数据;若
exportFieldsDescription为True,第 4 行为字段描述,数据从第 5 行起。
端口说明
输入端口 -
InputToken:鉴权与项目定位信息(token, proj_id, host);仅当需要从 GDIM 文件服务下载文件,或要执行模板 ID 校验时需要;若未提供则从pipeline.gdim_state.token / pipeline.gdim_state.proj_id / pipeline.gdim_state.host获取输出端口 -
OutputTables:从.gtb/.xlsx文件重建得到的TableCollection-OutputCoordinateSystem:从文件metadata.coordinateSystem解析得到的坐标系对象;若文件中未包含坐标系信息,则输出None
快速上手示例:读取本地导出的 GTB 文件
from gdisdk.modules.readers import ReadGtbFile
reader = ReadGtbFile(mname="ReadExportedTables")
reader.file = "项目表格导出.gtb"
reader.validate_template_id = False # 仅做本地读取时可关闭模板校验
reader.execute()
print(reader.OutputTables.data)
快速上手示例:读取 GDIM 文件服务中的导出文件
from gdisdk.modules.readers import ReadGtbFile
gdim_file = {
"success": True,
"fileId": "your-file-id",
"filename": "gdim_tables.gtb",
"originalFilename": "项目表格导出.gtb",
"downloadUrl": "/minio/download/your-file-id",
"host": "https://your-gdim-host/api/",
}
reader = ReadGtbFile(mname="ReadGtbFromGdim")
reader.file = gdim_file
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.execute()
tables = reader.OutputTables.data
快速上手示例:从 GTB 文件恢复坐标系统
from gdisdk.modules import ReadGtbFile, UpdateGdimAppProjectInfo
from gdisdk.pipeline import PipeLine
pipeline = PipeLine(app_name="RestoreCoordinateSystem", app_title="恢复坐标系统示例")
pipeline.update_gdim_state(token="你的GDIM Token", proj_id="你的GDIM项目ID")
read_gtb = ReadGtbFile("ReadGtbFile")
read_gtb.file = "项目表格导出.gtb"
update_proj_info = UpdateGdimAppProjectInfo("UpdateProjectInfo")
pipeline.add_links(
read_gtb.OutputCoordinateSystem >> update_proj_info.InputResultModel
)
pipeline.run()
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
要读取的 |
|
|
|
是否校验文件中的 |
|
|
|
用户 token;也可通过 |
|
|
|
目标 GDIM 项目 ID,用于模板 ID 校验;若设置,会覆盖 |
|
|
|
GDIM 平台地址。若为 |
读取行为说明
当
file为本地路径时,模块直接读取该文件。当
file为 GDIM 文件描述dict时,模块会先根据downloadUrl/host下载到工作目录,再执行解析。若文件扩展名不是
.gtb或.xlsx,或metadata缺失 / 格式错误,模块会给出GDIDataQualityWarning并输出None。输出的每张
TableData会使用字段内部名作为列名,同时把字段标题写入name_to_title,以便兼顾程序处理与展示。若导出文件开启了
export_fields_description,模块会根据metadata.headerFormat自动跳过第 4 行描述行,从第 5 行开始读取数据。
上传 GDIM 前检查
是否需要特别处理:当该模块在 GDIM 平台运行,且读取对象来自前端上传文件或需要校验目标项目模板时,是。
必须检查:
不要依赖仅本地存在的路径;上传后的推荐方式是由前端传入 GDIM 文件描述,并直接赋给
file;文件建议通过 pipeline attribute + 前端传入的 GDIM 文件描述(``dict``) 提供,这是上传后的推荐方式。
建议检查:
仅在“离线查看导出结果”场景下,可将
validate_template_id设为False,避免因没有项目上下文而中断读取;若需同时恢复坐标系统,可将
OutputCoordinateSystem连入UpdateGdimAppProjectInfo.InputResultModel。
若遗漏,常见现象:
本地调试可读取固定路径文件,但上传 GDIM 后因文件路径不可见而失败;
更多信息
GdimAppDataReader
模块简介与适用场景
GdimAppDataReader读取 GDIM 中其他 Pipeline 应用已落库的数据,反序列化为ResultModel,从OutputResultModel输出。上游应用须调用
save_data_to_db()声明持久化内容;本模块按app_title定位应用并取回全部已存字段。键名规则与save_data_to_db一致:"模块名@输出端口名"、"pipeline@属性名"、"模块名#参数名"``(``add_attribute()映射的参数须用后者)。
更详细的配置见 运行机制 (Runtime) 中「跨 Pipeline 数据」;取单个字段可配合 filters)。
端口说明
输入端口 -
InputToken:(token, proj_id, host)。若当前 Pipeline 已通过pipeline.update_gdim_state(token=..., proj_id=..., host=...)配置运行上下文,通常可不连接此端口,模块会从 Pipeline 自动获取 token。输出端口 -
OutputResultModel:反序列化后的ResultModel;当无法解析 token、未设置app_title、proj_id缺失或与平台数据不匹配时可能为None。
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
目标应用在 GDIM 模板中的标题,须与保存数据的应用标题完全一致,且能唯一定位到一个应用( |
|
|
|
鉴权与平台地址。可在构造函数传入并写入 |
快速上手示例:在 Pipeline 中读取另一应用保存的数据
from gdisdk.pipeline import PipeLine
from gdisdk.modules import GdimAppDataReader
pipe = PipeLine(app_name="ReportGenerate", app_title="报告生成")
pipe.update_gdim_state(token="...", proj_id="...")
reader = GdimAppDataReader(mname="ReadCorrosionApp")
reader.app_title = "水腐蚀性分析" # 与上游应用在模板中的标题一致
pipe.add_module(reader)
pipe.run()
result_model = reader.OutputResultModel.data
if result_model is not None:
# 键名取决于上游 save_data_to_db 的配置,例如:
# table = result_model.get("CorrosionModule@OutputTable")
更多信息
modules.filters 模块帮助 中的
GdimAppDataSelector。
GdimAppProjectInfoReader
模块简介与适用场景
GdimAppProjectInfoReader读取 GDIM「项目信息」应用(Project Information APP)数据。典型适用场景:报表/成果图生成前读取工程元数据;获取坐标系供坐标转换或统一基准。
端口说明
输入端口 -
InputToken:鉴权与项目定位信息(token, proj_id, host);若未提供则从pipeline.gdim_state.token / pipeline.gdim_state.proj_id / pipeline.gdim_state.host获取输出端口 -
OutputProjectInfo:项目信息(ResultModel,字段会根据 GDIM 项目信息动态生成) -OutputCoordinateSystem:项目坐标系(CoordinateSystem)
快速上手示例:读取项目信息与坐标系
from gdisdk.modules.readers import GdimAppProjectInfoReader
reader = GdimAppProjectInfoReader(mname="ReadProjectInfo")
reader.InputToken = ("你的GDIM Token", "12345", None)
reader.execute()
project_info = reader.OutputProjectInfo.data
coord = reader.OutputCoordinateSystem.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
鉴权与项目定位信息。若未在模块中显式传入,模块会优先从 |
|
|
|
若数据平台为原老版本系统 GBIM,则设置该值为 |
在 pipeline 中的使用方式
from gdisdk.connectors import log_in
from gdisdk.pipeline import PipeLine
from gdisdk.modules.readers import GdimAppProjectInfoReader
pipe = PipeLine(app_name="ReadProjectInfo", app_title="读取项目信息示例")
pipe.update_gdim_state(
token=log_in(user_name="你的GDIM用户名", password="你的GDIM密码"),
proj_id="你的GDIM项目ID",
)
read_info = GdimAppProjectInfoReader("ReadInfo")
pipe.add_module(read_info)
result = pipeline.run()
info = read_info.OutputProjectInfo.data
coord = read_info.OutputCoordinateSystem.data
更多信息
GdimTerrainDataReader
模块简介与适用场景
GdimTerrainDataReader从 GDIM「地形数据管理」应用中读取地形点,输出含x_coordinate、y_coordinate、z_coordinate的TableData。支持按全部点、参考点附近、参考线附近、闭合区域内四种方式查询;查询模式与对应参数见后文「查询模式说明」。
典型场景:地形切片(
SliceTerrain)、剖面出图前拉取剖面线附近地形点;与CreatePolyLines联用,由InputPolyLines提供参考线顶点。前置条件:目标 GDIM 项目须已启用「地形数据管理」应用,且存在至少一个地形数据组;
group_name须与平台中组名一致。空结果:查询无点时发出
GDIDataQualityWarning并输出None;token /group_name缺失,或nearest_line模式下既无line_points也未连接InputPolyLines时,亦输出None而不抛错。
端口说明
输入端口 -
InputToken:鉴权与项目定位信息(token, proj_id, host)。若 Pipeline 已通过pipeline.update_gdim_state(token=..., proj_id=..., host=...)配置gdim_state,模块会从 Pipeline 自动取 token,此时该端口可以不连接。 -InputPolyLines:可选,来自CreatePolyLines的多段线顶点表(TableData)。连接后,line_name选中的那条线会覆盖参数line_points,供nearest_line查询使用。输出端口 -
OutputTable:地形点表(TableData)。列名为x_coordinate、y_coordinate、z_coordinate;keep_gdim_id=True时额外保留gdim_id列。
快速上手示例:读取指定地形数据组的全部点
from gdisdk.modules.readers import GdimTerrainDataReader
reader = GdimTerrainDataReader(mname="ReadTerrainAll")
reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
reader.group_name = "默认地形组"
reader.query_mode = "all"
reader.execute()
table = reader.OutputTable.data
快速上手示例:沿剖面线查询附近地形点
from gdisdk.modules.gisOperators import CreatePolyLines
from gdisdk.modules.readers import GdimTerrainDataReader
create_lines = CreatePolyLines(mname="CreateSectionLine")
create_lines.define_poly_lines_by = "points"
create_lines.poly_lines = [
{"name": "剖面1", "x_coordinate": 100.0, "y_coordinate": 50.0, "z_coordinate": 10.0},
{"name": "剖面1", "x_coordinate": 200.0, "y_coordinate": 80.0, "z_coordinate": 12.0},
]
create_lines.execute()
terrain_reader = GdimTerrainDataReader(mname="TerrainNearLine")
terrain_reader.InputToken = ("你的GDIM Token", "你的GDIM项目ID", None)
terrain_reader.group_name = "默认地形组"
terrain_reader.query_mode = "nearest_line"
terrain_reader.line_name = "剖面1" # 与 InputPolyLines 中的 name 列对应
terrain_reader.limit = 2000
terrain_reader.InputPolyLines = create_lines.OutputPolyLines.data
terrain_reader.execute()
terrain_table = terrain_reader.OutputTable.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
地形数据组名称(与 GDIM 地形数据管理器中显示的组名一致)。模块会自动解析为组 ID;为 |
|
|
|
查询策略,详见「查询模式说明」。 |
|
|
|
|
|
|
|
|
|
|
|
配合 |
|
|
|
|
|
|
|
|
|
|
|
是否保留 GDIM 点 ID 为 |
|
|
|
鉴权与平台地址。可在构造函数传入;若未传则由 |
查询模式说明
|
含义 |
必填参数 |
|
|---|---|---|---|
|
读取组内全部地形点 |
|
否 |
|
距参考点最近的前 N 个点 |
|
是 |
|
距参考线最近的前 N 个点 |
|
是 |
|
闭合多边形区域内的点(不含边界) |
|
否 |
Note
InputPolyLines须含name、x_coordinate、y_coordinate、z_coordinate列(与CreatePolyLines输出一致);表为空或line_name无法匹配时会抛出ValueError。group_name在项目中不存在时会抛出ValueError,错误信息会列出当前可用组名。GDIM 界面上
query_mode切换时,update_ui_schema会联动显示/隐藏ref_point、line_points、polygon、limit、line_name等字段。
在 pipeline 中的使用方式
from gdisdk.connectors import log_in
from gdisdk.pipeline import PipeLine
from gdisdk.modules.gisOperators import CreatePolyLines
from gdisdk.modules.readers import GdimTerrainDataReader
pipe = PipeLine(app_name="TerrainSliceDemo", app_title="地形切片示例")
pipe.update_gdim_state(
token=log_in(user_name="你的GDIM用户名", password="你的GDIM密码"),
proj_id="你的GDIM项目ID",
)
create_lines = CreatePolyLines("CreatePolyLines")
terrain_reader = GdimTerrainDataReader("TerrainReader")
terrain_reader.group_name = "默认地形组"
terrain_reader.query_mode = "nearest_line"
terrain_reader.limit = 2000
links = create_lines.OutputPolyLines >> terrain_reader.InputPolyLines
pipe.add_links(links)
pipe.add_module(create_lines)
pipe.add_module(terrain_reader)
result = pipe.run()
terrain_table = terrain_reader.OutputTable.data
更多信息
modules.gisOperators 模块帮助 中的
CreatePolyLines``(``InputPolyLines来源)。modules.geoDataProcess 模块帮助 中的 ``SliceTerrain``(地形切剖)。