乐于分享
好东西不私藏

SATEMPro新插件上线:三维切片分析

SATEMPro新插件上线:三维切片分析

SATEMPro官方网新插件正式上线:三维切片分析用户可通过官网直接下载使用。

01 插件概述

ThreeDSliceToolboxPlugin 用于三维散点数据(x, y, z, value)的网格化插值、多类型切片提取、三维/二维可视化与 DAT 导出。

02 主要功能

● 数据导入:支持 Local ASCII 与 HDF5 数据集

● 三维网格化:支持 IDW (3D)NearestLinear

● 切片类型:

    ○ Horizontal (fixed z)

    ○ Vertical (normal to XY)

    ○ Custom Plane

    ○ Arbitrary Surface

    ○ Along Path

● 通用分层切片:LayersLayer StepCustom Layer Steps

● 三维显示:基于 pyvistaqt.BackgroundPlotter,支持对象叠加与对象管理。

● 二维显示:基于 Matplotlib,支持等值填色与等值线。

● 导出:支持单文件导出,也支持按层自动拆分导出。

03 运行依赖

主要 Python 依赖:

  ● numpy

  ● h5py

  ● PySide6

  ● pyvista

  ● pyvistaqt

  ● matplotlib

04 界面结构

 主界面由三个 Dock + 中央三维区构成:

  ● 左上 Dock:Data Source + Gridding

  ● 左下 Dock:Slice Settings

  ● 右侧 Dock:Visualization

  ● 中央:3D Plotter

  ● 中央右窄栏:三维视图快捷工具栏

05 使用流程

1. 选择数据源并导入(ASCII 或 HDF5)。

2. 在 Gridding 设置网格与插值参数,点击 Run Gridding

3. 在 Slice Settings 选择切片类型与参数,点击 Extract Slice

4. 在 Visualization

  ○ Refresh 3D 刷新当前可见对象;

  ○ Plot 2D 打开二维切片窗口;

  ○ Add Slice 3D 叠加当前切片到已有 3D 场景。

5. 点击 Export DAT… 导出切片结果。

06 参数说明

 6.1 Data Source(数据源)

● Mode

  ○ Local ASCII:通过 Import Wizard 导入文本数据。

  ○ HDF5 Dataset:先选数据集,再映射 x/y/z/value 列。

● Import Wizard(ASCII 模式)

  ○ File:输入文件路径。

  ○Delimiter:分隔符 auto/comma/tab/space/semicolon

  ○ Skip Rows:跳过文件头部行数。

  ○ First data row is header:首行是否作为列名。

  ○ X/Y/Z/Value:列映射,四列必须唯一且可转为数值。

● Loaded

  ○ 显示当前已加载的数据源与点数,作为后续网格化/切片输入。

6.2 Gridding(网格化)

6.2.1 三种插值方法简介

● IDW (3D)(反距离加权)

  ○ 依据距离加权平均,距离越近权重越大。

  ○ 对离散点较鲁棒,结果通常更平滑。

  ○ 适合多数常规场景作为默认方法。

● Nearest(最近邻)

  ○ 每个网格节点直接取最近样点值。

  ○ 速度最快,边界与突变保留明显,但结果块状感更强。

  ○ 适合快速预览或不希望平滑时使用。

● Linear(局部线性)

  ○ 在局部邻域拟合线性模型并估计节点值。

  ○ 相比 Nearest 更连续,相比 IDW 更偏局部趋势。

  ○ 当邻域点不足或几何退化时会走回退策略。

6.2.2 网格空间参数(三轴均可设置)

● Grid Spacing (X/Y/Z)

  ○ 网格间距,范围 0.001 ~ 1e6,默认 5.0

  ○ 间距越小,分辨率越高,计算量越大。

● Grid Size (X/Y/Z)

  ○ 网格点数,范围 2 ~ 10000,默认 80/80/40

  ○ 点数越大,内存与计算耗时增长更明显。

● Bound Min / Bound Max (X/Y/Z)

  ○ 网格边界,范围 -1e9 ~ 1e9,默认 0/1

  ○ 导入数据后会自动更新为数据范围;也可手动覆盖。

● 参数联动规则

  ○ 修改 Spacing 会回算 Size

  ○ 修改 Size 会回算 Spacing

  ○ 修改边界会触发对应轴参数同步。

6.2.3 算法参数(按方法切换)

● IDW 页

  ○ Search Radius (0=unlimited):搜索半径,0 表示不限半径。

  ○ Power:距离幂次(默认 2.0,范围 0.1~8.0),越大越强调近邻。

 ○Max Neighbors:最大邻点数(默认 16,范围 1~512)。

  ○ No-neighbor Fill:无可用邻点时回退方式:

    ■ Nearest:最近点值。

    ■ Global Mean:全局均值。

● Nearest 

  ○ Search Radius (0=unlimited):半径外节点使用回退值。

  ○Outside Radius Fill:回退方式(Nearest/Global Mean)。

● Linear 页

  ○ Search Radius (0=unlimited):线性拟合的邻域半径约束。

  ○ Support Neighbors:局部拟合的支持邻点数(默认 24,范围 4~128)。

  ○ Extrapolation:拟合不可用时回退方式(Nearest/Global Mean)。

6.3 Slice Settings(切片参数)

6.3.1 通用层参数(所有切片类型共享)

● Layers

  ○ 层数,范围 1~500,默认 1

● Layer Step

  ○ 层间偏移,范围 -1e6 ~ 1e6,默认 5.0,可为负值。

● Custom Layer Steps

  ○ 自定义偏移序列(支持英文/中文逗号、分号、空格分隔)。

  ○ 当该字段存在非 0 数值时,优先使用该序列。

  ○ 逻辑上会自动包含基准层 0,并对重复偏移去重。

6.3.2 各切片类型参数

● Horizontal (fixed z)

  ○  Z Value:目标切片高程/深度。

  ○  Tolerance:目标层不可直接插值时的兜底容差带。

  ○ X Sample Step / Y Sample Step:输出时沿网格轴抽样步长(>=1)。

● Vertical (normal to XY)

  ○ Line XY (x1,y1;x2,y2):定义垂向剖切基线(两点式)。

  ○  Half Width:剖切带半宽,控制剖面厚度。

  ○   Along-Line Samples:沿线采样数。

  ○  Z Levels:垂向采样层数。

● Custom Plane

  ○  Origin (x,y,z):平面上一点。

  ○  Normal (nx,ny,nz):平面法向量(不可为零向量)。

  ○  Tolerance:采样/匹配容差。

  ○ Plane U Length / Plane V Length:平面局部坐标尺寸。

  ○ Samples U / Samples V:平面两个方向采样数。

● Arbitrary Surface

  ○  Surface XYZ File:任意曲面点文件(x,y,z)。

  ○ Z Offset:相对曲面的整体偏移量(当前仅该类型使用)。

● Along Path

  ○ Path File:路径点文件(x,y,z)。

  ○ Parallel Vector (vx,vy,vz):定义剖切平面的方向约束。

  ○ Path Step:路径重采样步长(>0)。

  ○ Vector Samples:沿方向采样层数。

6.4 Visualization(可视化参数)

● 操作按钮

  ○ Refresh 3D:按当前勾选与参数重绘三维场景。

  ○ Plot 2D:弹窗绘制当前切片二维图。

  ○ Add Slice 3D:把当前切片追加到现有三维场景(不清空已有对象)。

● 显示开关

  ○ Show Raw:显示原始散点。

  ○ Show Grid:显示网格化结果。

  ○ Show Slice Position:显示切片位置(面/路径/线框等位置对象)。

  ○ Show Slice Data:显示切片提取数据本体。

  ○ Show Scalar Bar:显示色标。

  ○ Reset Camera:重绘后重置视角。

● 风格与性能

  ○ Raw/Grid/Slice Colormap:三类对象颜色映射。

  ○ Grid Renderpoints 或 volume

  ○ Raw/Grid/Slice Max Points:显示点数上限,用于限流提升交互速度。

  ○ Raw/Grid/Slice Size:点大小。

  ○ Slice Position Opacity:切片位置面的透明度(0.05~1.0,默认 0.32)。

07 Add Slice 3D

Add Slice 3D 会根据当前开关决定追加内容:

● 仅勾选 Show Slice Position:追加切片位置面(按层处理)。

● 仅勾选 Show Slice Data:追加切片数据散点。

● 两者都勾选:两种对象都追加。

● 两者都未勾选:提示无可添加对象。

08 右侧三维工具栏

● Pan:平移交互(后端不支持时自动隐藏)。

● Rotate:旋转交互。

● +X / +Y / +Z / Iso:快速视角切换。

● Parallel:平行投影开关。

● Axes:坐标轴显示开关。

● Grid:网格显示开关。

● Scalar:色标开关。

● Shot:保存 3D 截图。

● Objects:打开对象管理器(隐藏/显示/删除)。

09 2D绘图说明

● 支持多开窗口,便于不同切片结果对比。

● 窗口支持最小化/最大化/关闭,关闭后释放资源。

● 网格类切片:contourf + contour

● 散点类切片:优先 tricontourf + tricontour,失败时回退散点着色。

● 已内置中文字体回退与负号修复(axes.unicode_minus=False)。

10 导出规则

● 导出格式:空格分隔 DAT 文本。

● 列头自动生成(无 # 前缀):

  ○ 4 列:x y z value

  ○ 5 列:x y z value distance

● 多层切片且层信息有效时,自动拆分为多个文件:

  ○ 文件名后缀:_L##_dz+/-offset

11 错误与降级行为

● 未导入数据就网格化/切片:给出可读错误并中止。

● HDF 路径不存在或数据无效:可读错误并中止。

● 切片局部不可插值:按算法与容差规则降级后继续(能保留的点会保留)。

● 可选输入(如 optional 资源)缺失:降级继续。

12 常见问题

Q1:为什么 Show Slice Position 没显示?

● 检查是否已完成切片提取。

● 检查 Show Slice Position 是否勾选。

● 若当前切片点不足或全无效值,无法建面时会回退其他显示路径。

Q2:为什么网格化后较慢?

● 降低网格尺寸(Grid Size)。

● 调整搜索半径、邻点数等参数。

● 减少可视化点数上限(Raw/Grid/Slice Max Points)。

Q3:为什么中文乱码?

● 插件已做字体自动回退;若系统缺少常见中文字体,请安装如“微软雅黑/黑体”等字体后重启应用。

详细资料

https://www.yuque.com/sunhuaifeng/satem/atgyd5wku2u3onci