资讯动态

多道瞬态面波频散拾取与二维Vs剖面连接实践

发布时间:2026/10/28 1:03:48 来源:尧图企业网站定制
简介这套面波处理及剖面连接软件面向地震勘探、地球物理研究及工程地质评价人员整合面波数据处理与速度分层剖面连接两类工具可用于浅部地壳速度结构分析、测线剖面拼接和成果解释。压缩包共91个文件、约1.8MB包含可执行程序与驱动、帮助文档、示例图像及少量源码和工程文件涵盖软件运行、加密狗驱动安装、操作说明与图示素材便于在旧版Windows环境中部署试用。已有923人学习下载说明其在地震面波处理与速度模型构建场景中具有一定参考价值。软件功能涉及数据预处理、频散与时频分析、面波成像、速度模型反演及多测线剖面连接适合需要了解CCSWSWIN、CCSWSMAP工作流程并查阅说明文档的读者也可作为相关课程与项目实践的辅助材料。1. 一条 200 m 的测线采集十几分钟接剖面能磨一下午一条 200 m 的测线24 道 4.5 Hz 检波器、2 m 道间距、偏移距 5 m野外采集也就十几分钟真正占用时间的是后面两步——把每一炮的频散曲线一根根拾出来再把沿线几十个一维 Vs 剖面接成一张能解释的连续图。面波处理及剖面连接的难点常不在单点反演而在接缝相邻两个测点的频散曲线稍有跳变连出来的二维剖面上就会多出一条竖直的假异常解释时很容易被当成陡倾界面或构造。这套软件面向的正是多道瞬态面波的常规作业链数据导入与道编辑、频散谱成像与曲线拾取、层状模型反演、多剖面连接与成图、成果导出。它适合工程勘察、路基与坝体检测、隧道超前探测这类需要“沿测线连续成像”的场景也适合教学演示如果只做单点、单炮的频散分析用它的连接模块就有点浪费。下面按数据进来、曲线拾出来、剖面接起来、交付前验一遍的顺序展开。2. 进软件之前先把道集捋顺格式、几何与频散谱成像面波处理最怕“带着错误几何一路跑到出图”。软件能算但算的是错的数据。这一章先把导入环节的三个量、频散谱的四个参数和一个体检脚本讲清楚后面拾取和连接才有意义。2.1 道头里最容易错的三个量dt、dx、偏移距多数面波数据是 SEG-2 或裸二进制也有从 SEG-Y 转过来的。格式转换本身不难难的是道头里的几何信息被默认值覆盖。常见做法是先在采集班报里核对采样间隔、道间距、最小偏移距、排列方向再在软件的数据管理里逐项填填完立刻看道集显示——合格的道集应该是同相轴连续、左右道能量衰减自然、没有某一道突然“站起来”。参数典型取值填错的直接后果怎么核采样间隔 dt0.5 ms / 1 ms频率轴整体缩放拾取频带全偏记录长度 ÷ 样点数道间距 dx1 m / 2 m相速度整体偏大或偏小波长算错卷尺实测两道距离最小偏移距 x0510 m近道体波干扰混入高阶模式误判炮点至首道距离道数 ntr12 / 24 / 48频散谱叠加道数变少能量图发散文件里的道头计数增益/单位仪器原始计数振幅谱幅值无意义能量归一化失真与仪器量程对照我在某工地见过一次“相速度全程 900 m/s”的结果反演出来的 Vs 比混凝土还硬。查到最后是道间距按 1 m 填的实际是 2 m相速度整体翻倍。这类错误用再好的反演算法也救不回来所以道集显示这一步不能省。另外两个隐性项要一起处理直流偏置和坏道。直流偏置来自仪器或前置放大器表现为整道均值明显不为零做频谱时会在 0 Hz 附近堆一大团能量坏道表现为 RMS 能量比相邻道低一个数量级或干脆是死值。这两项在导入阶段处理掉比在频散谱上“看玄学”省事得多。2.2 频散谱成像相移法的参数怎么定面波频散谱的常规做法是 f-k 变换或相移法phase-shift。相移法的思路直白对某个频率 f把各道信号按 exp(i2πfx/c) 做相位校正若某个相速度 c 猜对了各道同相叠加能量最大把 f 和 c 都扫一遍就得到频散能量图。它比 f-k 变换分辨率高一些对道数不多的排列更友好。参数上要盯住四个频率范围。下限由检波器主频和排列长度决定4.5 Hz 检波器实际可用的下限一般在 68 Hz上限受空间假频约束最小可靠波长约等于两倍道间距所以 f_max ≈ c_min /(2·dx)。2 m 道间距、最低相速度按 100 m/s 算上限大概 25 Hz硬拉到 50 Hz 只会得到一圈叠印的假能量。相速度扫描范围。c_min 到 c_max 要覆盖整条曲线的可能区间浅层软土可能低到 80120 m/s硬路面能到 600 m/s 以上。范围给窄了曲线会被“截断”在图边上拾取时只能猜。频率采样点数 nf 与速度步长 dc。决定图的分辨率也决定计算量。一般 nf 取 150300dc 取 25 m/s 就够用步长过粗会出现阶梯状能量带拾取点跳格。时间窗与窗函数。面波在记录上是一个随时间拉长的波包窗开太短会切掉低频长周期部分导致低频段能量发散开太长则把空气波和体波一起卷进来。我一般先看全记录用一道能量包络定窗再加汉宁窗压制泄漏。2.3 一段导入前的体检脚本软件里也有质控视图但批量数据的道头一致性还是脚本快。下面这段读裸二进制道集输出几何信息、主频和死道位置跑完再决定要不要进软件。import numpy as np import json def load_gather(path, ntr, ns, dtypei2, gain1.0): 读取裸二进制道集ntr 道 × ns 采样点返回 float64 数组 raw np.fromfile(path, dtypedtype, countntr * ns) if raw.size ! ntr * ns: raise ValueError(f文件长度不符期望 {ntr*ns} 点实际 {raw.size}) return raw.reshape(ntr, ns).astype(np.float64) * gain def qc(data, dt, dx, x0): ns data.shape[1] dc data.mean(axis1) # 每道直流偏置 rms np.sqrt((data ** 2).mean(axis1)) # 每道能量 freqs np.fft.rfftfreq(ns, dt) amp np.abs(np.fft.rfft(data * np.hanning(ns), axis1)) f0 freqs[np.argmax(amp[:, 1:], axis1) 1] # 跳过 0 Hz 取主频 dead np.where(rms 0.2 * np.median(rms))[0] return { dt_ms: dt * 1000, dx_m: dx, offset0_m: x0, record_len_s: ns * dt, dc_mean: round(float(dc.mean()), 2), f0_median_hz: round(float(np.median(f0)), 2), dead_channels: dead.tolist(), } if __name__ __main__: g load_gather(line01_shot03.dat, ntr24, ns2048) print(json.dumps(qc(g, dt0.0005, dx2.0, x05.0), ensure_asciiFalse, indent2))代码逻辑与参数说明dtypei2对应 16 位整型仪器原始数据如果采集系统是 24 位或浮点换成i4或f4dt0.0005是 0.5 ms 采样2048 点对应 1.024 s 记录长度够记录 30 m 深度范围的面波f0_median_hz落在 1030 Hz 属正常如果只有 5 Hz 上下说明这道集里低频噪声占主导得回头查检波器耦合dead_channels为空才建议直接进软件否则先在道编辑里剔除或替换。dc_mean绝对值超过满量程的 1% 就要做去均值处理别指望后续反演把它抹平。提示这段脚本只读不写跑完不动原始文件。批处理时把 ntr、ns 做成配置表逐炮核比在软件里一炮一炮点开看快得多。3. 频散曲线拾取与反演从相速度到一口 Vs 剖面频散拾取是整条链上最依赖经验的一步也是软件最能体现价值的一步——能量图上叠着基阶、高阶、体波和假频肉眼很容易挑到一条“最顺”却不是基阶的线。反演本身是数学问题但参数设错残差可以很低而剖面完全不能用。3.1 拾取基阶、高阶和那条“看起来最顺”的线基阶模式的相速度随频率单调下降速度随深度递增的正常地层能量在图上最连续。高阶模式在高频段会出现折返和分支能量也强尤其在存在低速夹层或硬路面覆盖层时。误拾高阶的典型后果是反演出来的浅层 Vs 偏高整条剖面像“浮”起来一样跟钻孔对不上。几条实操准则沿频率从低到高拾低频段先定住因为低频对应大深度一旦定错深部整体平移。每个拾取点都回看该频率上的能量脊是否唯一。出现两条强度相近的脊优先选低频端能与你已拾曲线平滑相连的那条。频带不要贪宽。常见有效频带是 830 Hz低频端受排列长度限制最大探测深度约半个排列长度高频端受空间假频限制。拾完把理论曲线叠回去看。软件一般支持正演曲线叠加拟合曲线系统性偏在一侧说明拾取有系统偏差不是随机误差。3.2 反演参数层数、厚度、泊松比与初始模型面波反演本质是求层状模型的横波速度属于强非唯一问题。软件里通常给阻尼最小二乘或遗传算法两套前者快、依赖初始模型后者慢、能跳出局部极小。参数我一般这样设参数建议取值说明层数48 层超过 8 层在没有先验时基本不可约束层厚浅部 0.51 m深部递增层厚与分辨率匹配别全设 1 m泊松比0.350.45饱水软土取高值硬岩取低值密度18002000 kg/m³对频散曲线敏感性低不必精调初始模型由实测曲线的 0.91.1 倍相速度换算别用一条直线分层给迭代次数1030观察残差下降是否收敛有个容易被忽略的点层数不是越多越好。层数加到十几层残差会继续降但那是模型在拟合噪声。等效模型一大堆最终剖面会出现横向不连续的“斑块”连接的时候极难处理。宁可层数少、层厚合理让残差留在 3%5%也不要追求 1% 以下的残差。3.3 反演结果的三道自检残差、灵敏度、等价模型反演跑完直接导出的剖面我一般不当真。至少要过三道自检残差分布、参数灵敏度、等价模型。残差看分布而不只看均值。整体偏高说明模型整体偏硬或层厚系统偏大某频段残差集中偏大多半是那个频段拾取有问题或者该频段存在高阶模式污染。灵敏度看每个层厚和速度对数据的贡献深部层厚如果灵敏度接近零说明数据根本约束不到那么深出的图只能当趋势看。等价模型则是跑几组不同初始模型看结果是否收敛到同一形态——收敛一致的部分才敢解释。下面这段代码用来把软件导出的实测曲线和理论曲线做残差核算输出逐点相对误差和加权均方根。import numpy as np def misfit(obs_f, obs_c, mod_f, mod_c): obs_*: 实测拾取 (频率 Hz, 相速度 m/s)按频率升序 mod_*: 反演理论曲线(频率, 相速度) 返回(加权 RMS 相对残差 %, 逐点残差 %) mod_ci np.interp(obs_f, mod_f, mod_c) # 理论曲线插到实测频点上 r (mod_ci - obs_c) / obs_c * 100.0 w 1.0 / np.maximum(obs_c, 1e-6) # 低速段权重更大 rms float(np.sqrt(np.sum((w * r) ** 2) / np.sum(w ** 2))) return rms, r obs_f np.array([8, 10, 12, 15, 18, 22, 26, 30], float) obs_c np.array([210, 195, 182, 170, 161, 152, 146, 141], float) mod_f np.array([8, 12, 16, 20, 24, 28, 32], float) mod_c np.array([205, 186, 172, 162, 155, 149, 145], float) rms, r misfit(obs_f, obs_c, mod_f, mod_c) print(f加权 RMS 相对残差{rms:.2f}%) print(逐点残差(%), np.round(r, 1))逻辑与参数说明np.interp把理论曲线重采样到实测频点保证逐点可比这一步不能省因为反演输出的频率网格通常和拾取点不一致权重取 1/c是因为低速段同样的绝对误差对应更大的相对误差不加权会让浅部误差被深部掩盖判据上加权 RMS 小于 5% 算拟合良好5%10% 要回看拾取超过 10% 基本可以判为不收敛。逐点残差如果出现“低端负、高端正”的系统走势说明层厚分布不合理调层厚比调速度有效。4. 剖面连接把几十个一维剖面拼成能解释的二维图连接是这套软件区别于普通频散分析工具的地方。每个测点反演出来的是一维 Vs-深度曲线把它们按桩号排开、深度对齐、插值成二维网格才是一张能交给设计的剖面图。接缝处的每一个决定都会变成图上的一条线。4.1 连接前的三对齐桩号、高程、深度基准连接出问题八成以上是这三项没对齐。桩号对齐。测点间距在野外常常不是严格等距绕障碍物、避管线、加密段都会让实际桩号偏离设计桩号。软件里如果按“测点序号 × 道间距”生成桩号接出来的剖面在加密段会被拉伸。正确做法是用实测桩号GPS 或皮尺累计并按升序排列。高程对齐。面波反演出的深度是从地表起算的地表本身有起伏。如果整条测线高差超过 12 m 而剖面按水平处理深部界面会跟着地形“起伏”解释时容易误判成构造。常规处理是把深度换算成绝对高程或统一基准面深度取负加测点高程再画图。深度基准对齐。各测点的反演层厚通常不同直接拼接会在深度方向错位。要先把每个一维剖面重采样到统一的深度网格比如 0.25 m 一格再做横向插值。这一步是很多“接出来像马赛克”的根因。4.2 插值方法怎么选线性、反距离、克里金与层序匹配方法适用场景优点风险线性Delaunay测点较密、地形平缓快、可预期、不产生超出数据范围的值测点稀疏处出现三角面片感反距离加权测点不等间距实现简单、局部过渡平滑幂次选大易出“牛眼”选小平滑过度克里金有变差函数支撑、需估计不确定性能给误差图参数拟合麻烦短测线不稳层序匹配层界面清晰、层数一致保留界面陡变不失真相邻测点层数不一致时对不上我的习惯是常规生产用线性插值加空区掩膜速度场插值后再提等值线有明显层界面且各点层数一致的工区才用层序匹配——先沿桩号把每一层的顶底深度连成线再在层内插值速度这样界面不会被抹成斜坡。克里金留给需要出误差图的报告场景日常不折腾。还有一条常被忽略横向插值不要越过空档。两个测点之间如果隔了 8 m比如中间有建筑物没法布点线性插值会硬生生连出一条“平”的剖面看着连续其实是假的。设置最大插值距离超过就留白比编一个好看但错的图强。4.3 用 Python 复现一次连接下面这段做三件事把各测点重采样到统一深度网格、按桩号做二维线性插值、对超过最大空档的位置置空。import numpy as np from scipy.interpolate import griddata def resample_profile(depth_raw, vs_raw, depth_grid): 把单个一维剖面线性重采样到统一深度网格 order np.argsort(depth_raw) return np.interp(depth_grid, depth_raw[order], vs_raw[order]) def connect(stations, depths_col, prof_list, dx0.5, max_gap4.0): stations: (n,) 实测桩号升序单位 m depths_col: (m,) 统一深度网格向下为正单位 m prof_list: 长度 n 的列表每项是该测点的 (depth_raw, vs_raw) dx: 输出横向网格间距 max_gap: 允许插值的最大横向空档超过则置 NaN vs np.vstack([resample_profile(d, v, depths_col) for d, v in prof_list]) # (n, m) xs np.arange(stations.min(), stations.max() dx, dx) X, Z np.meshgrid(xs, depths_col) pts np.array([(s, z) for s in stations for z in depths_col]) V griddata(pts, vs.reshape(-1), (X, Z), methodlinear) gap np.min(np.abs(X[None, :, :] - stations[:, None, None]), axis0) V[gap max_gap] np.nan # 空档过大不插值避免连出假剖面 return X, Z, V # 示例3 个测点各自层厚不同 stations np.array([0.0, 6.0, 12.0]) depths_col np.arange(0, 30.01, 0.25) prof_list [ (np.array([0, 2, 5, 9, 14, 20, 30.]), np.array([150, 190, 240, 300, 360, 420, 460.])), (np.array([0, 2.5, 6, 10, 15, 21, 30.]), np.array([160, 200, 250, 310, 370, 430, 470.])), (np.array([0, 1.8, 4.5, 8.5, 13, 19, 30.]), np.array([155, 195, 245, 305, 365, 425, 465.])), ] X, Z, V connect(stations, depths_col, prof_list, dx0.5, max_gap4.0) print(V.shape, np.isnan(V).sum())逻辑与参数说明resample_profile用np.interp把每个测点原始的分层厚度线性重采样到统一网格这一步保证深部不错位dx0.5是输出横向分辨率取值不要小于最小测点间距的三分之一否则插值出来的等值线会过度抖动max_gap4.0是安全阀实测桩号间距 6 m 的工区建议设到 34 m加密段可以放宽到 2 mgriddata(..., methodlinear)在凸包外返回 NaN正好配合掩膜使用不要换成nearest最近邻会在边界堆出一圈假的等值线台阶。输出V直接用pcolormesh或写 CSV 都能成图深度大的行记得翻转 y 轴。4.4 平滑与空区别把插值伪影当异常插值出来的网格一定带伪影问题是怎么区分“伪影”和“真实异常”。三个经验判断横向平滑要克制。常用的做法是对速度场做 35 个网格点的滑动平均窗口宽度不要超过相邻两个测点的间距。窗口一开大真实的局部低速体比如回填坑、空洞会被抹平成一个缓坡解释的时候看不见了。看等值线形态。真实的地层界面通常有一定延续性沿测线方向缓变插值伪影多表现为以某个测点为中心的“同心圆”或菱形边界正好落在测点连线上。拿原始一维剖面回查。二维图上任何一个可疑异常都要回到对应桩号的一维 Vs 曲线上去看如果那一根曲线本身没有对应层的速度变化二维图上的异常就是插出来的。这条我吃过亏图上一条“V 形低速带”兴冲冲标了个异常回头一维曲线干干净净。5. 避坑与排查五个把剖面连歪的现场问题下面五条都是实际项目里反复出现的按现象、原因、解决的顺序写碰上了直接对号入座。5.1 几何类桩号方向反了、高程没归位现象连出来的剖面和地质剖面“镜像”对称或者同一套数据换个测线重做界面倾向完全相反。原因排列方向与测线桩号方向不一致。野外从 0 桩往大桩号放排列回来从另一端编号导入时又按序号生成桩号整条线就反了。第二个常见原因是高程没归位深部界面跟着地形起伏看着像褶皱。解决导入后用两个已知地物井口、路面接缝核对桩号方向剖面图强制叠加地形线深度轴用绝对高程而不是“相对深度”。我现在的习惯是出图前先画一张只有地形线和测点位置的底图方向不对一眼就能看出来。5.2 频散类拾到高阶、频带太窄现象整条剖面的浅层 Vs 普遍偏高或者剖面深部突然出现一条横向贯穿的高速层与相邻测线完全对不上。原因一是拾取时误选了高阶模式高频段能量强、曲线顺很容易被吸过去二是频带人为收窄低频端截掉后大深度信息缺失反演只能靠外推深部出现“编”出来的高速层。解决回到频散能量图按频率从低到高重拾一遍每个点确认能量脊唯一把可用频带按排列长度重算——最大探测深度约半个排列长度30 m 排列别硬解释到 40 m。深部结果如果全靠外推在图上做淡化处理别画得和实测一样实。5.3 频散类残差很低但剖面不合理现象反演残差 1% 出头拟合曲线和实测曲线几乎重合但剖面横向一跳一跳相邻测点 Vs 差 100 m/s。原因层数给多了模型在拟合噪声或者初始模型每个测点独立随机生成导致各点收敛到不同的等效模型。面波反演的非唯一性在这里体现得最明显——数据拟合得好不代表模型对。解决层数降到 48 层层厚按深度递增设置相邻测点用上一个点的结果做初始模型顺序反演强制横向连续性跑 3 组不同初始模型看收敛形态。这一条算血泪经验残差是必要条件不是充分条件。5.4 连接类网格太密插出“牛眼”和假异常现象二维剖面上出现以某个测点为中心的同心圆状高低速团或测线中段凭空冒出一个孤立低速体。原因输出网格间距 dx 取得比测点间距小太多插值算法在数据点之间反复“猜”或者没设最大插值距离跨越大空档硬连。解决dx 不小于最小测点间距的三分之一一般取 0.5 m 就够设max_gap超过空档的位置置空出图前把测点位置用小三角标在剖面顶部凡是异常中心正好落在单个测点上的先怀疑插值。5.5 成图类色标和深度轴把结论带偏现象同一份数据两个人出的图结论不一样评审时被问“这个低速区到底是多低”答不上来。原因色标用了自动拉伸每张图的色阶范围不同深度轴单位混用m 和 层号等值线间隔随手设。解决整个项目固定一套色标范围比如 100800 m/s和等值线间隔50 m/s图例标单位深度轴统一用米并注明基准面。别小看这一条交付的图被反复返工一半是这类“非技术”原因。6. 交付前怎么验证交叉点、重复点与已知体连接剖面做完最后一关是验证。没有验证的剖面只能算“图”不能算“成果”。我一般跑三样验证方式具体做法判据交叉点一致性两条测线相交处比对同一位置的 Vs 值相对偏差小于 10% 可接受重复点复测同一桩号换时间/换排列方向重采一遍Vs 偏差小于 8%界面深度差小于 0.5 m已知体标定用回填坑、管道、已知地层界面所在位置核对异常位置偏差小于一个测点间距钻孔对比有钻孔的工区比对 Vs 分层与岩性界面主要界面深度误差小于 10%交叉点这一项最容易被跳过但性价比最高。两条测线在同一位置给出一高一低两个 Vs说明至少有一条线的几何或拾取有问题先别急着解释构造。重复点复测适合在成果评审前做成本不高能挡掉大部分“这数据靠不靠谱”的质疑。还有一个具体技巧把每次连接的参数存成一份元数据跟成果图一起归档。参数不多但少了它三个月后想复现同一张图就得重来一遍。import json, datetime meta { line: L01, stations_m: [0.0, 6.0, 12.0], depth_step_m: 0.25, grid_dx_m: 0.5, max_gap_m: 4.0, interp: linear, vs_range_ms: [100, 800], inversion: {layers: 6, poisson: 0.4, density: 1900, rms_pct: 4.2}, created: datetime.date.today().isoformat(), } with open(L01_connect_meta.json, w, encodingutf-8) as f: json.dump(meta, f, ensure_asciiFalse, indent2)这段没多少技术含量价值全在“以后能查”。字段里rms_pct是这次反演的加权残差max_gap_m和grid_dx_m决定了图上的空白区和光滑程度评审被问到“这里为什么没数据”时翻出这个文件就能答。色标范围也一并记下来保证同项目所有图件可比。从那以后我每次出连接剖面都强制走一遍“交叉点核对 参数归档”哪怕工期再紧也不省这两步——翻车的时候这两步就是后悔药。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑