2. 钻孔数据模型基础

钻孔数据库之所以比一张“钻孔台账表”复杂,根本原因在于一个钻孔同时携带三类性质完全不同的信息:它在空间中的位置与轨迹、它穿过的地层与矿体分段、以及它在各个深度上测得的属性值。这三类信息在关系数据库中需要被拆成不同的表,用主键与外键串起来;而在空间数据模型中,它们又要能被还原成一条三维线和一个沿线分布的分段体。理解这两套模型的“衔接点”,是后续做关联查询与空间查询的前提。

一、孔口定位:把钻孔钉进地理空间

孔口数据是钻孔的“身份证”加“坐标锚点”。一条典型的孔口记录至少包含:钻孔编号(如 ZK1203)、工程类型、开孔坐标 X/Y、孔口高程 Z、开孔方位角、开孔倾角、设计孔深、终孔孔深、施工日期与坐标系代码。其中钻孔编号是业务主键,在整库中必须唯一;坐标与高程决定钻孔在平面图和三维场景中的落点;方位角与倾角则是后续测斜计算的初始条件。

这里必须先明确参照约定,否则后续所有计算都会出错。本文统一采用:X 为东向(Easting)、Y 为北向(Northing)、Z 为高程(向上为正);方位角从正北起顺时针量取,0°~360°;倾角为钻孔轴线与水平面的夹角,向下钻进记为负值(如 -75°),向上仰孔为正值。若项目使用其他约定(例如方位角从正东起算),必须在孔口表中以字段或元数据显式声明,并在整个数据库中保持一致。

二、测斜数据:把“一个点”还原成“一条线”

深孔不可能始终保持设计倾角,钻具自重、地层软硬变化都会造成偏斜。因此测斜表按“钻孔编号 + 测点深度”记录一系列离散测点,每个测点给出该深度处的倾角与方位角。测斜表的主键通常是(钻孔编号,测点深度),外键指向孔口表。

要把离散测点还原为连续轨迹,工程上常用最小曲率法或平衡正切法逐段递推。以平衡正切法为例,设相邻两测点深度为 D₁、D₂,倾角为 θ₁、θ₂,方位角为 α₁、α₂,则该测段在三个方向上的增量可近似为:

ΔD = D2 - D1
ΔX = ΔD/2 × (sinθ1·sinα1 + sinθ2·sinα2)
ΔY = ΔD/2 × (sinθ1·cosα1 + sinθ2·cosα2)
ΔZ = ΔD/2 × (cosθ1 + cosθ2)      # 注意:向下钻进取负

示例(假设数据):孔口 (X=500.00, Y=1200.00, Z=850.00),θ1=-80°, α1=90°
测点2:D2=100m, θ2=-78°, α2=92°
ΔX ≈ 50×(sin(-80°)·sin90° + sin(-78°)·sin92°) ≈ 50×(-0.9848-0.9781) ≈ -98.15
ΔY ≈ 50×(sin(-80°)·cos90° + sin(-78°)·cos92°) ≈ 50×(0+0.0341) ≈ 1.71
ΔZ ≈ 50×(cos(-80°)+cos(-78°)) ≈ 50×(0.1736+0.2079) ≈ 19.08(向下取 -19.08)
测点2坐标 ≈ (401.85, 1201.71, 830.92)

逐段累加即可得到整条钻孔的三维折线。这条折线正是空间数据模型中的“钻孔轨迹要素”,也是把分层数据挂接到三维空间的位置基准。需要强调的是,上述数值为教学示例的合理假设,实际项目应以测斜仪原始记录为准,并注意磁方位角与真方位角的改正。

三、分层数据:沿深度切分的“段”

分层表记录钻孔穿过的地层、矿体、含水层等分段信息,典型字段包括:钻孔编号、层序号、起始深度、终止深度、层位代号、岩性名称、厚度、接触关系。其主键可设计为(钻孔编号,层序号),外键仍指向孔口表。分层数据的关键特征是“深度区间”,它本身不含坐标,必须借助测斜轨迹才能换算为空间中的三维线段——这正是关系模型与空间模型衔接的核心动作。

换算逻辑是:给定分层起止深度,在测斜折线上做线性插值,求出该深度对应的 X/Y/Z,从而得到分层段的三维起止点。若一个分层跨越多个测段,则应逐测段切分后再拼接,避免用整段直线近似造成空间位置偏差。

四、属性数据:挂在“点”或“段”上的观测值

属性表存放采样化验、测井、岩芯描述等观测值,常见字段为:钻孔编号、采样起深、采样止深、样品编号、元素或参数名、数值、单位。属性数据既可能对应一个点(如某深度的测井读数),也可能对应一个区间(如 2 米长的化学样)。因此属性表通常需要“起深 + 止深”两个字段,并允许同一区间存在多个参数(长表结构)或按参数横向展开(宽表结构)。长表更利于查询与扩展,宽表更利于表格展示,设计时应按查询需求取舍。

五、衔接点:关系主键如何变成空间要素

把上述四张表放在一起看,衔接关系就清晰了:孔口表提供空间锚点,测斜表把锚点延展为三维轨迹,分层表与属性表通过“钻孔编号 + 深度区间”挂接到轨迹上,再经插值换算获得空间坐标。关系模型负责保证数据的一致性与完整性(主键唯一、外键约束、深度区间不重叠),空间数据模型负责提供几何表达与空间运算能力(相交、缓冲、剖面切割)。二者不是替代关系,而是同一份钻孔数据在“表格视图”和“几何视图”下的两种呈现。

钻孔数据模型:关系表结构与空间几何的衔接 关系模型(表结构) 孔口表 Hole PK 钻孔编号 · X · Y · Z 方位角 · 倾角 · 设计孔深 坐标系代码 · 施工日期 测斜表 Survey PK (钻孔编号, 测点深度) FK 钻孔编号 → 孔口表 分层表 Layer PK (钻孔编号, 层序号) 起深 · 止深 · 层位代号 · 岩性 属性表 Assay PK 样品编号 FK 钻孔编号 · 起深 · 止深 · 参数值 1:N 1:N 1:N 深度插值 主键→几何 空间数据模型(三维几何) 地表 / 孔口基准面 孔口 (X,Y,Z) 测点1 测点2 测点3 测点4 分层段 A(起深—止深) 分层段 B 样品/测井值 深度 D 孔口锚点 测斜轨迹 分层段 属性观测

六、设计要点与常见问题

第一,主键设计要能表达“深度”这一维度。孔口表用钻孔编号作主键即可,但测斜表、分层表、属性表都必须把深度或区间纳入主键,否则同一钻孔的多个测点、多个分层无法区分。第二,深度区间必须做约束校验:同一钻孔内分层起止深度不得重叠、不得出现止深小于起深、不得超出终孔深度,这些约束应在入库时由数据库检查或由导入程序校验。第三,坐标系必须显式存储。孔口坐标若来自不同来源(GPS、全站仪、图纸数字化),可能分属不同坐标系,入库前应统一转换并记录坐标系代码,否则空间查询会出现整体偏移。第四,测斜缺失时的处理策略要事先约定:浅孔可默认按设计倾角与方位角直线延伸,深孔则必须补测,不能默认直线,否则深部分层空间位置误差会迅速放大。

从查询角度看,这套模型支撑两类典型操作:一类是关系查询,例如“查出某钻孔所有金品位大于 1 g/t 的样品段及其所属地层”,通过钻孔编号与深度区间做表连接即可完成;另一类是空间查询,例如“统计某剖切面附近 50 米范围内所有见矿钻孔”,则需要先把分层段插值为三维线段,再做距离运算。两类查询共用同一套主键与深度字段,这正是关系模型与空间模型能够衔接的工程基础。

建模自检:任取一个分层记录,问自己三个问题——它的钻孔编号能否在孔口表找到唯一记录?它的起止深度能否在测斜折线上插值出两个三维点?它的深度区间是否与其他分层重叠?三问皆“是/否”符合预期,说明该钻孔的数据模型衔接是通的。