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

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

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

02 主要功能
● 数据导入:支持 Local ASCII 与 HDF5 数据集。
● 三维网格化:支持 IDW (3D)、Nearest、Linear。
● 切片类型:
○ Horizontal (fixed z)
○ Vertical (normal to XY)
○ Custom Plane
○ Arbitrary Surface
○ Along Path
● 通用分层切片:Layers、Layer Step、Custom 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 Render:points 或 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
夜雨聆风