☰
双狐构造成图全流程:T0散点网格化、时深转换与井校成图
2026/10/31 19:05:56 网站建设 项目流程

简介:面向地质成图与地球物理勘探初学者的双狐软件实操资料,聚焦构造图编制这一核心场景,帮助读者打通从基础数据整理到成图导出的完整流程。压缩包内为1个PDF文档,大小约646KB,内容以图文步骤和参数说明为主,适合边看边在软件中对照操作。文档系统梳理井位、地质分层、断层与T0散点等数据的准备要求,并覆盖数据导入修饰、网格化参数选择、时深关系拟合、时深转换、深度散点网格化、误差分析与井校、等值线去冗余和平滑、图框图例比例尺添加及图片导出等环节,还附带地震属性图编制与老图活化的简要流程。已有148人学习,可作为地质工程师、石油工程人员及地学专业学生熟悉双狐成图思路、查漏补缺的参考。

1. 双狐构造成图:从T0散点到带断层的深度图

双狐软件做构造成图,真正耗时间的往往不是点按钮,而是前面四张表的列顺序和后面井校误差。地球物理勘探里把T0散点变成带断层、带井校的深度构造图,绘图环节还得经得起报告插图放大看。这套资料把双狐软件编制构造图、地震属性图和老图活化三条线拆成可照做的步骤,适合地质成图岗位的新手照着复现,也适合熟手核对参数边界。手里有井位、分层、断层边界和T0散点,却总在网格化或井校环节返工的人,可以先按第2章把数据底稿摆平,再开软件。

2. 基础数据底稿:四张表的列顺序与斜井处理

2.1 井位、分层、断层、边界的列定义

双狐导入数据时按列映射,软件不会替人猜表头含义。井位表至少保留井名、X、Y三列,斜井和水平井再补井口坐标、井斜轨迹和目的层坐标。地质分层表至少保留X、Y、海拔分层三列;如果从井库直接导出,常见列是井名、地层名称、底深海拔、层底横坐标、层底纵坐标。断层和作图边界都按线类走,最少要X、Y、id三列,id用来区分不同断层线段和边界线段。T0散点表只能放X、Y、T0三列,顺序不能变;做厚度图时换成X、Y、厚度三列。

数据类型最少列关键点导入方式
井位井名、X、Y斜井补井口、井斜轨迹、目的层坐标点类
地质分层X、Y、海拔分层海拔正负号统一,层底坐标别拿井口坐标代替点类
断层X、Y、idid分组,断层线段不要和边界混在一起线类
作图边界X、Y、id闭合线,范围覆盖成图区线类
T0散点X、Y、T0三列顺序固定,不能加表头列网格化输入
厚度散点X、Y、厚度与T0分开存文件网格化输入

我一般把原始导出另存一份,工作副本改成无表头、空格分隔的纯数字列,不给软件猜列的机会。井名可以留,但导入点类时只映射X、Y,井名作为点属性挂上去。常见井库导出会带单位、逗号、空列,导入前先清掉,否则坐标列会整体错位。断层和边界虽然都走线类,但最好分文件存,后期修饰和裁剪时不容易误选。

2.2 斜井和水平井的目的层坐标

直井的井口坐标和分层坐标基本重合,斜井和水平井不能这么省。井口坐标用于画井位符号,井斜轨迹按线类导入,目的层分层点要用层底横坐标、层底纵坐标,不能用井口坐标顶替。否则井校时井点位置和实际构造位置对不上,误差统计会给出一个看起来很小、实际没意义的数。分层表里的底深海拔要统一符号,海拔深度向下为负还是向下为正,整个项目只能选一种,不能一半井库导出一半手工改。

井斜轨迹常见做法是整理成X、Y、id三列,按井名或轨迹段给id,导入双狐后走线类修饰。目的层坐标则回到分层点表,和普通分层点一起按点类导入。斜井的T0值要取目的层处的t0,不要取井口处的t0;井位统计时也要确认统计的是目的层位置。这个细节在开发阶段井网密的时候容易被忽略,一旦井校误差压到0.1%以内,斜井坐标错位就会在误差表里冒出来。

2.3 用一段校验脚本给数据做体检

导入前我会先跑一遍轻量校验,重点看列数、空值、坐标范围、重复点和T0异常值。下面这段脚本不依赖第三方库,直接读空格分隔文本,适合当数据体检的第一道闸。

import csv def check_t0(path, x_min=1e7, x_max=3e7, y_min=1e6, y_max=1e7, t0_min=0, t0_max=10000): rows = [] with open(path, newline="", encoding="utf-8-sig") as f: for line_no, line in enumerate(f, 1): parts = line.strip().split() if not parts: continue # T0散点只允许三列,顺序为 X Y T0 if len(parts) != 3: raise ValueError(f"第{line_no}行列数为{len(parts)},应为3列") x, y, t0 = map(float, parts) # 坐标范围按项目实际投影带调整,这里只做粗筛 if not (x_min <= x <= x_max and y_min <= y <= y_max): print(f"第{line_no}行坐标越界: {x}, {y}") if not (t0_min <= t0 <= t0_max): print(f"第{line_no}行T0异常: {t0}") rows.append((x, y, t0)) seen = set() for x, y, t0 in rows: key = (round(x, 3), round(y, 3)) if key in seen: print(f"重复平面点: {key}") seen.add(key) print(f"总点数: {len(rows)},有效唯一平面点: {len(seen)}") return rows if __name__ == "__main__": check_t0("t0_scatter.txt")

逻辑说明:函数按空白拆分每行,强制三列,坐标和T0分别做范围粗筛,重复点按平面坐标四舍五入到毫米级判断。参数说明:x_min/x_max/y_min/y_max要按项目投影带改,不能照抄示例;t0_min/t0_max按工区时间范围改;如果数据带表头,先删表头再跑。这个脚本只做体检,不做插值,也不替代双狐里的网格化检查。

提示:井位表、分层表也可以照这个思路各写一个小检查,重点看X、Y列有没有被井名或id挤占。导入前发现列错,比导入后满图找错点省事得多。

3. 导入与图元修饰:点类、线类和正断层上下盘

3.1 为什么井位走点类、断层走线类

双狐里点类保留井点符号、井名属性和分层点属性,线类保留断层线、边界线的线段拓扑和线型修饰。井位、分层、井斜按点类导入,断层、作图边界按线类导入,这个分工不能反。井位如果走线类,后面井位统计和井校点提取会别扭;断层如果走点类,线型、宽度、符号和上下盘修饰都做不出来。点类和线类的区别不是界面按钮不同,而是后续网格化、裁剪、等值线遇断层处理时认不认这层数据。

数据导入类型修饰重点常见误用
井位点类井符号、井名标注把井名当X列导入
分层点类分层点符号、颜色用井口坐标代替层底坐标
井斜轨迹线类轨迹线型、宽度和断层线混在同一图层
断层线类曲线宽度、颜色、符号、上下盘id列混进XYZ映射
作图边界线类闭合线、线宽和断层同文件不分组

导入前先把图层命名想好,井位、分层、井斜、断层、边界各建一层,默认图层0不要一直留着。图层名后面会出现在图例和图层控制里,临时名越多,后期修饰越乱。断层线按id分组后,正断层把上升盘、下降盘分开修饰;断距小的逆断层可以不分上下盘,但要在图层名或属性里标记清楚,免得后面自己都忘了哪条线是哪盘。

3.2 导入断层的列映射和全图显示

启动双狐后新建画布,点新建按钮,文件处导入断层文件。导入界面选线类信息,右侧xyz对应列要手动选:X列对X,Y列对Y,id列不要塞进z。导入完成后点界面上方全图显示图标,先看断层线是否落在画布内、线段是否连续、id分组有没有串线。默认图层0改成断层,再右键修饰曲线宽度、颜色、符号。断层参数按图面比例调,报告插图用细线,挂图用粗线,不要一套参数用到所有输出。

井位、分层、井斜按点类导入,点类修饰重点是符号大小和标注避让。井位密的地方,井名标注容易压线,常见做法是先关标注,出图前再按图面空白手动调。作图边界按线类导入,闭合线要检查首尾点是否闭合,边界范围要覆盖成图区,不要贴着散点边缘裁得太紧,否则误差曲面外推时没有余量。

提示:导入后先全图显示,再看坐标范围。X、Y列选反的典型现象是图元跑到画布外,或者全图显示后比例极端拉长,不要靠肉眼硬猜。

3.3 正断层上下盘与逆断层的小断距处理

正断层上升盘、下降盘分开修饰,是为了后面等值线遇断层时能表达断距和盘别。做法可以按断层线分段,也可以按盘别分图层,关键是同一断层在不同盘上的线型、颜色或符号有区分。断距小的逆断层可以不分上下盘,但断层线本身仍要保留id和分段,否则等值线遇断层时不知道该断在哪。断层线不要随手打断成碎线,id分组乱了,后面断层存在方式设置会变成玄学。

断层修饰参数没有一套通用值,线宽按图面比例定,符号大小按断层性质定。正断层符号方向要和下降盘一致,别只改颜色不改符号。边界线用闭合线,线宽可以比断层细,颜色低调一点,避免抢构造等值线的视觉重心。保存时按图层分别保存,先点类后线类,再边界,工程文件另存一份带日期的工作副本。

3.4 图层命名和保存顺序

图层命名建议带用途:井位、分层、井斜、断层上盘、断层下盘、边界、T0散点、深度曲面、等值线、图饰。不要用“图层1”“图层2”这种临时名,后面做图例和裁剪时找不到。保存顺序上,我一般先把点类数据导入并修饰完,再导入线类断层和边界,最后存工程。这样中途出错时,回退成本低,不用整幅图重来。

4. T0网格化与时深转换:参数、临时文件和井校成图

4.1 T0散点网格化与临时文件Contour.dfd/f(x,y).dfg

T0散点网格化是构造成图的第一道硬门槛。双击网格化模块,选择X、Y、T0三列,设置网格参数、不可信度、等值线间距。网格间距常见做法是按图面1到2毫米对应实际距离估算,先粗后细;搜索半径要覆盖井间空白,但不能跨断层乱拉;不可信度用来限制远离散点的外推,取值过大容易把无控制区抹平,过小则边界抖动。等值线间距按构造幅度和报告比例尺定,10米、20米、50米都可以试,先看整体形态再定。网格化结果临时存在C:/temp下,文件名是Contour.dfd和f(x,y).dfg。Contour.dfd是带等值线的图形文件,可编辑、可修饰;f(x,y).dfg是网格文件,用于单网格或两个网格文件的曲面运算。双击Contour.dfd检查网格化结果,不满意就回去改参数重做,直到形态、边界和断层关系都能接受。满意后把两个文件复制或剪切到指定工作目录,别长期在临时目录上作业。

参数作用调整思路
网格间距控制网格分辨率先按图面1到2毫米估算,粗做看形态,细做看局部
搜索半径控制散点影响范围覆盖井间空白,不跨断层硬拉
不可信度控制外推可信范围无控制区大时保守,边界抖动时逐步试
等值线间距控制等值线密度按构造幅度和报告比例尺选
断层存在方式控制等值线遇断层表现按断层性质和成图要求设置

4.2 时深关系拟合:井点统计与公式选择

时深关系分析在井位处右键,走统计、井位统计,统计井口处的t0值,与井的目的层海拔深度做拟合,得到拟合公式。样本要取有T0、有可靠分层海拔、井斜坐标正确的井;斜井用目的层坐标,不用井口坐标。拟合前先看散点分布,分构造部位看有没有系统偏移,样本少的部位不要硬套一个公式。常见做法是先做线性拟合,再看残差;如果构造复杂,分段拟合或加二次项要谨慎,公式越复杂,外推越容易翻车。下面这段脚本只做拟合复算,用来核对双狐里得到的公式,不替代软件内统计。

import numpy as np # t为双程旅行时,z为海拔深度,单位统一后再代入 t = np.array([2.10, 2.35, 2.60, 2.85, 3.05]) z = np.array([-2800, -3050, -3300, -3520, -3700]) # 一次多项式拟合,得到 z = a*t + b coef = np.polyfit(t, z, 1) print("拟合系数 a, b:", coef) print("拟合公式: z = %.6f * t + %.6f" % (coef[0], coef[1])) # 残差检查,残差大的井要回查分层和T0 pred = np.polyval(coef, t) for i, (ti, zi, pi) in enumerate(zip(t, z, pred), 1): print(f"井{i}: t={ti}, z={zi}, 拟合z={pi:.2f}, 残差={zi-pi:.2f}")

逻辑说明:polyfit做一次多项式最小二乘拟合,输出斜率和截距;残差用于找离群井。参数说明:t和z必须同项目、同符号体系,示例数值只作格式参考;残差超过构造解释允许范围的井,先查分层海拔符号、井斜坐标和T0拾取,不要直接删点。

4.3 深度散点网格化、误差曲面和井校运算

时深转换用曲面逻辑运算,按拟合公式把T0网格转成深度网格。深度散点再网格化,得到未井校的深度曲面。误差分析时统计各井的构造深度,用海拔深度减构造深度得到误差值;误差值网格化得到井校前误差曲面,误差点范围尽量和构造图范围一致。误差校正用曲面与曲面运算:未井校深度曲面加或减井校前误差曲面,得到井校后的深度曲面。加减方向取决于误差定义,做之前先在井点表里抽两口井手算核对,别把符号搞反。

这一步的坑在于误差曲面范围和网格参数。误差点只覆盖井控区时,误差曲面外推到无井区会把构造图拉变形;误差曲面网格参数和深度曲面不一致时,运算后局部会出现台阶。常见做法是让误差点范围贴住构造图边界,误差曲面网格间距与深度曲面保持一致,运算前先看误差等值线是否平滑、有没有孤立高值。

4.4 等值线生成、去冗余、平滑和反网格化

井校后的深度曲面生成等值线,把曲面文件直接拖入,在图上右键曲面处理,生成等值线,设置参数和断层存在方式。断层存在方式按断层性质选,正断层上下盘分开的要让等值线在断层处断开或按盘处理。等值线出来后先删冗余小圈,再做平滑,不需要的部分用外切、内切切除。编辑时不要只追求好看,等值线改动大时要用编辑后的等值线重新网格化,得到与等值线完全一致的曲面;改动小可以视情况跳过。反网格化不是多余步骤,它决定后面曲面运算和误差统计认不认这套线。

4.5 图框图例比例尺与PNG导出

成图最后加常用图框、图例、比例尺、指北针。井校后误差统计要再做一遍,开发阶段三维地震解释井点深度相对误差控制在0.1%以内,这个数不是拿来看的,是拿来判断井校是否过头的。图片导出一般用PNG,导出前按PPT、报告插图、附图册不同用途调图层修饰参数,线宽、字号、符号大小分开存版本。报告插图看的是缩小后能不能读,挂图看的是放大后线是否毛刺,不要一套参数走到底。

5. 避坑:构造成图最常见的五处翻车

5.1 坐标列顺序和单位混用

现象:导入后井位跑到图外,断层和井位错位,全图显示比例极端拉长。原因:X、Y列选反,或者井库导出带投影带号、单位混用,井位表和断层表不是同一套坐标。解决:导入前用校验脚本看X、Y范围,井位、分层、断层、T0四张表统一投影带和单位;导入断层时手动映射X列、Y列,id列不要进z;全图显示后先抽一口井和一条断层线核对平面位置,再往下做。

5.2 网格化参数与临时目录

现象:网格化后大片空白、边界锯齿,或者改了参数结果没变化。原因:网格间距过大、搜索半径过小、不可信度设置不适合散点覆盖;临时目录C:/temp里旧文件没被覆盖,或者目录写入权限有问题。解决:先粗后细试网格间距,搜索半径覆盖井间空白但不跨断层,不可信度按无控制区大小逐步试;每次网格化前把Contour.dfd和f(x,y).dfg另存或清掉,满意后立刻复制到工作目录,不在临时目录上继续编辑。

5.3 时深拟合样本与分层海拔符号

现象:时深拟合公式斜率离谱,时深转换后深度和井点对不上。原因:样本井太少、斜井用了井口坐标、分层海拔正负号不统一,或者把异常T0井混进拟合。解决:只取有可靠T0和目的层分层的井,斜井用层底坐标,海拔符号全项目统一;拟合后看残差,离群井回查分层和T0拾取,不要为了拟合好看直接删井。样本少的构造部位分段检查,公式外推范围要标出来。

5.4 误差曲面范围和等值线反网格化

现象:井校后构造反而更乱,局部出现台阶或孤立圈闭;等值线编辑后曲面没变化。原因:误差点范围小于构造图范围,误差曲面外推把无井区拉变形;误差曲面和深度曲面网格参数不一致;只改等值线没做反网格化。解决:误差点范围尽量贴构造图边界,误差曲面网格间距与深度曲面一致,运算前看误差等值线是否平滑;等值线改动大时用编辑后的线重新网格化,别让图和曲面两张皮。

5.5 导出清晰度与图层修饰

现象:报告插图里等值线糊成一片,挂图上断层符号太大,图例和比例尺压住构造。原因:导出前没按用途调线宽、字号、符号大小,PNG分辨率不够,图层透明和叠放顺序没检查。解决:报告插图、PPT、附图册分开存修饰版本,导出前放大到实际使用尺寸看线宽;PNG导出后检查图例、比例尺、指北针是否压线;断层符号和井名标注按图面空白避让,不要等导出后再返工。

6. 进阶复用:属性图、老图活化和0.1%误差验证

6.1 地震属性图烤屏与四点校正

地震属性图进双狐,先在属性提取软件里把颜色调到最佳效果,再启动双狐新建空白画布,把属性图烤屏粘贴。属性图周边有坐标时,只需拷屏一次不带井位的属性图;周边无坐标时,要两次拷屏,一次带井位、一次不带井位,两张图在画布上完全重叠。坐标校正最好用四点校正,四个点尽量覆盖全图,坐标准确,不要只图省事点四个角。校正后用内切、外切裁掉多余图片,再加图框、图例、比例尺、指北针,最后按用途导出PNG。

6.2 老图活化与图层采集

旧图件里的图形元素要借用时,用双狐活化:导入旧图,坐标校正,建相应图层,通过描线、描点把需要的元素分图层采集。等值线图先对等值线赋值,再做网格化;采集完的图层和自己图件叠合,或者单独加图饰导出。老图活化的关键是分图层,不要把断层、等值线、标注描在同一层,后面改线宽和颜色会互相牵连。

6.3 井校误差验证

井校后误差统计我一般看两件事:相对误差是否在0.1%以内,误差分布有没有随构造部位系统偏。单井误差小但成片偏,说明时深公式或误差曲面有系统问题;个别井误差大,先查分层和井斜坐标。从那以后我每次出图前都强制走一遍坐标列顺序、临时目录、误差曲面范围这三项检查,再开双狐做最后修饰。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询