gaozheng
|
52830bbcb0
|
feat(core): Anomaly volumeDsId→remarkSourceId(挂体/切片)+resolveAnomalyMount+修正spec/plan命名(Task11 Step1)
|
2026-06-24 20:37:45 +08:00 |
gaozheng
|
6e3c810dcc
|
docs: 异常归属设计修订-取消独立异常区,异常按归属挂体/切片+三级树(spec+plan Task11+HANDOFF)
|
2026-06-24 20:24:24 +08:00 |
gaozheng
|
ef10c354c9
|
docs: VTK 重构实施 plan + 生成三维体入口/归属调整
- 新增实施计划(8 phase/12 task, TDD bite-sized)
- 客户确认变动: 新增三维体入口回段头(数据类型层面)+对话框「生成位置」选归属; 归属放开 GS/项目根/TM(structParentConfType 1或2, 默认单GS挂该GS/跨GS挂项目根)
- spec 同步该变动; openapi 升 v0.6-draft
|
2026-06-24 17:17:32 +08:00 |
gaozheng
|
cec41e3539
|
feat(vtk): ViewAdaptive 接异步重组(update 不阻塞,view 拖动不卡)+修 C2 维度用 store.dims
把 C3-1 AsyncRegionBuilder 接进 ViewAdaptiveVolumeSource:updateView 只提交目标
(selectLod→RegionTarget→requestTarget),不在主线程重组、立即返回;currentImages/
sliceSource 经 builder.takeLatest 取最新已就绪(没新结果用上一张),空选区不提交、
保留上一张。新增 AsyncRegionBuilder::takeLatest(int&) 非破坏式重载随结果回传 level,
供 lastLevel 同步。
C2 MEDIUM:RegionReorganizer 维度改用 store.dims(level)(单一真源),弃自算
ceil(n/2^level),防 store 降采样规则漂移。
gpr_poc view 切异步:拖动中 InteractionEvent 持续提交目标(非阻塞)+33ms 重复定时器
非阻塞拉取后台就绪纹理换上→主线程不被重组卡住(跟手);preview/smoke/默认取景用
阻塞轮询保证拿到首图。
测试:ViewAdaptive 9 测(原 6 调为异步轮询版+新增 3:AsyncUpdateEventuallyReady/
UpdateDoesNotBlock(<50ms)/UsesStoreDimsNotSelfComputed),AsyncRegionBuilder 5 测仍绿;
全量 382 测通过。
|
2026-06-24 10:22:22 +08:00 |
gaozheng
|
ba59c8861a
|
feat(poc): build-stream 多线合并流式建体 + Track B 总验收实测
|
2026-06-24 08:08:28 +08:00 |
gaozheng
|
0537e938b4
|
feat(vtk): 12d 打磨探针-梯度不透明度+光照,出体内部对比3图
新增 gpr_poc polish 子命令:同一全分辨率 level0 局部段 + 斜穿俯视视角离屏渲三图对比体内部白雾能否靠打磨解决。梯度不透明度 piecewise 按实测梯度幅值分布(median/p90/p99)标定。三图唯一变量为梯度不透明度/光照:a 基线白雾、b 加梯度不透明度、c 加梯度+光照。各报结构像素/亮度/真实fps。结论:打磨消雾并让强梯度层界面浮出,但沿线长均匀段固有偏雾,梯度不透明度无法凭空长出层。
|
2026-06-23 20:53:42 +08:00 |
gaozheng
|
fb175d6d3d
|
fix(gpr_poc): view 交互窗口统一走单纹理快路,去 MultiBlock 分块
交互 view 任何相机位置都只渲一张 vtkImageData + 单 vtkSmartVolumeMapper,
与 --preview 走完全同一条产单图 + 同一 mapper 的路径:
- LOD 选层:远观/中景升到最细的整卷各轴<=16384 层(L2/L3)整卷一张纹理;
拉近取 level0 视野覆盖的 X 子区域重组一张纹理。两条都用 buildLevelImage /
buildLocalLevel0Image 产单图。
- 去掉交互路径的 OutOfCoreSource/BrickPager/MultiBlock + budget 分块渲染
(renderC 等 POC 子命令仍保留)。
- LOD 随缩放真切换,只在 EndInteraction 重组一次。
- 新增 view --preview --near 拉近预览(view-near.png),与真窗口同路径。
- parseArgs 支持无值布尔旗标(--preview --near 不再误吞)。
修复:开窗+拉近无缺块(整张纹理),fps 从个位数升到几十~上百。
|
2026-06-23 20:15:28 +08:00 |
gaozheng
|
f4922dd6e2
|
feat(gpr_poc): view 交互窗口默认视觉参数采用 gallery var4
无 --gallery/--preview 的交互窗口此前用旧暗默认,现统一为 var4:
seismic 配色 + V 形实体不透明度包络(floor0.035/mid0.38/max0.84) +
取景(El18/Az22/Zoom2.0) + exagg8 + 略亮冷灰背景。
- 抽出 kViewDefaultVariant 引用 kGalleryVariants 末项(var4)作单一来源,
交互默认与 view-var4 走同一份参数,避免复制粘贴漂移(DRY)。
- 新增 makeVariantProperty 统一按包络建体属性,gallery 与交互默认共用。
- viewSetupDefaultFrame 取景角度改取自 var4;cmdView 配色/包络/背景/exagg
默认改为 var4;--exagg/--opacity 显式传入仍覆盖。
- 验证:view --preview 产出 view-default.png 与 view-var4 一致
(结构像素 30.18% vs 30.11%、亮度 33.9 vs 33.7、fps 77 vs 75);
view --smoke 仍 OK。
|
2026-06-23 19:52:35 +08:00 |
gaozheng
|
9af363080a
|
feat(poc): view 视觉调参画廊 4 组离屏 preview
view 加 --gallery / --preview --variant N:同一沿线中段局部段+同一相机框法,渲 4 组不同视觉参数(不透明度包络/配色/取景/背景)各存 PNG 供挑选。
新增 makeSeismicColorScale(红白蓝高对比)、makeJetColorScale(全程高饱和)、makeSolidVolumeProperty(V形实体感包络:近零背景压低但可见、中高值段普遍 0.3~0.85、半透明实心内部层次可读)、meanBrightness(画面均亮度度量)。
基线默认结构像素仅 0.07%(几乎全黑、缩角落);4 组拉到 17~30%,亮度显著提升,fps 76~86(≫30)。推荐 var4 作默认。
|
2026-06-23 19:40:52 +08:00 |
gaozheng
|
b1a8d1365d
|
fix(gpr_poc): view 默认取景改局部段+加 --preview+fps 显真实帧率
修 view 开窗空白:默认相机框整条 2.2km 线(横截面 1:34),即便 exagg=8
也是隐形细带。三处修复:
1. 默认取景改对准沿线中段一个 ~256 道(4 brick 列)的全分辨率局部体,
ResetCamera+Zoom 框满画面,首帧即见层状结构(同 lod-tuned-local.png 取景)。
2. 新增 view --preview:用与真窗口完全相同的相机/source/exagg/传函离屏渲一帧
存 view-default.png,旋 N 帧报真实 fps+结构像素数(排除深蓝灰背景)+纹理错。
3. fps 文本改为松手时连渲 3 帧累计实际 Render 耗时取均值,不再把空闲间隔算进去。
实测 preview:默认视角有结构(结构像素>0)、无纹理错、真实渲染 ~185fps。
|
2026-06-23 19:27:39 +08:00 |
gaozheng
|
bec6a376d5
|
fix(ui): 详情对话框页脚/表单改走 FormKit 符合视觉规范(去Arco式大按钮)
之前为"像原版"手搭 QFormLayout + Arco式页脚(45%等宽/两端对齐/多主按钮/顺序反),
违反 Geopro3.0 视觉规范 §6.7/§7.5/§7.0.10。改为规范实现(字段结构/API 不动):
- 白化/另存/滤波/网格化:页脚改 formkit::addDialogButtons(右对齐 取消+确定,主按钮蓝);
异步确认改接 Ok 按钮 clicked(校验/whitenData/save 成功才 accept);表单改 makeEditForm
+editLabel+capField+addSection;宽度按规范(白化560/另存420/滤波保留宽/网格分组)
- 滤波"保存设置"作次按钮(ActionRole)不抢 primary;网格化 上一步(次)左+取消/确定右
- 快查:ScatterFilterDialog 可编辑输入改 makeEditForm;AutoAnnotation 主操作 setDefault
- 异常各弹窗/反演表单 已合规未动
build all 绿,341/341。
|
2026-06-23 18:40:11 +08:00 |
gaozheng
|
824898a65c
|
feat(poc): gpr_poc renderLOD 探针验证 LOD-fps 全量交互渲染可行性
四件事全离屏双闸实测(本机 RTX3060):
(a)粗层概览 level2 ~752fps (b)全分辨率局部 level0 ~380fps
(c)LOD 切换过渡切换帧 ~5.5ms 无可感知卡顿 (d)存 3 张对比 PNG。
双闸:无 3D 纹理维度错误 + 三段均回读非空像素,fps 可信。
判据:两端均达交互级且切换无卡顿 -> LOD-based C 路线钉死可行。
最低配未验,需目标机复测。tools CMake 加 IOImage 供 PNG 截图。
|
2026-06-23 17:49:11 +08:00 |
gaozheng
|
f51706b4b3
|
feat(poc): renderC-partitioned 单 mapper SetPartitions 整卷体绘制 fps 探针
整卷喂单个 vtkOpenGLGPUVolumeRayCastMapper + SetPartitions(ceil(nx/16384),1,1),
绕过 GL_MAX_3D_TEXTURE_SIZE 纹理墙。双闸(纹理错捕获+真实回读非空像素)防假帧率。
实测(44476x29x162,398MB):SetPartitions(3,1,1) 真渲出(非空 1264px,无纹理错),
体绘制 ~8.8-11fps,峰值内存 ~556-653MB。绕过纹理墙成功但未达交互级(<15fps),
与 renderC MultiBlock 9.5 静态同档 → 瓶颈在全分辨率整卷 ray cast 本身,
非每块一 mapper。VTK 这条路交互级天花板暴露。
|
2026-06-23 17:10:49 +08:00 |
gaozheng
|
2beb97fa73
|
feat(vtk): 核外分块体绘制 OutOfCoreSource + renderC 基准(POC-C 命门探针)
OutOfCoreSource 实现 IVolumeRenderSource:相机选 LOD + 视锥裁剪选视野块 →
BrickPager(LRU,内存恒定)→ 每块 ≤64³ vtkImageData(带世界坐标)。renderC 用
vtkMultiBlockVolumeMapper 渲染工作集,绕开 GL_MAX_3D_TEXTURE_SIZE(16384)单轴墙。
实测(单线 store nx=44476>16384,renderB INVALID):
- 分块核外真渲出(非空像素,无纹理维度错),对照 renderB 整卷上传失败。
- 内存恒定:budget=64 驻留 64 块 / 220MB,与体总量无关。
- 静态工作集 9.5 fps;动态换页 1.45 fps(qUncompress 解压+每帧重建 mapper 177ms/帧,
撞墙);fps 随块数近似反比劣化(256 块 0.47 fps)。结论与缓解见 poc-results-C.md。
含单元测试(纹理安全/budget 恒定/块世界坐标)。
|
2026-06-23 15:07:09 +08:00 |
gaozheng
|
03805f4326
|
feat(poc): POC-B 离屏 GPU 渲染基准(offscreen-smoke 闸门 + renderB 体绘制/切片 fps)
- gpr_poc 新增 offscreen-smoke: 离屏 vtkRenderWindow + cube + 读回像素, 闸门验证离屏 GL 可用
- gpr_poc 新增 renderB: 整卷 VTK_SHORT 体绘制(旋相机) + 切片扫描(reslice 沿 Z) fps 实测
- 关键发现: line 001 cellXY=0.05 整卷 44476x29x162, X 维超 GL_MAX_3D_TEXTURE_SIZE(16384),
vtkVolumeTexture 上传失败, 体绘制 fps 如实标 INVALID(绝不上报假帧率); 切片 54.6fps 真实流畅
- 用 CapturingOutputWindow 捕获纹理维度错误 + 维度超限双判据, 避免误把空纹理假帧率当性能
- CMakeLists 补 RenderingVolume/RenderingVolumeOpenGL2/ImagingCore/InteractionStyle 组件
|
2026-06-23 13:52:51 +08:00 |
gaozheng
|
6fa0a31f3e
|
docs(poc): 补齐 POC-B 真实数据实测指标 + Z 尺度诊断结论
readIprb 修复后线 001 (cellXY=0.2,cellZ=0.05,levels=2) 端到端跑通:
体维度 11120x8x162、体素 14.4M、压缩比 1.88x、build≈22.6s/峰值 4.98GB、
load 335ms/38MB。深度链路验证正确:dz≈0.009778m、nz=162(非旧 §3 误报的 1,
为 soilVelocity 换算缺失时代的遗留),CLI specFromSurvey 无需修改。
|
2026-06-23 12:37:53 +08:00 |
gaozheng
|
bfd7d4aafd
|
feat(poc): gpr_poc headless 度量 CLI(地基端到端串联)
串起 assembleGprSurvey→buildGprVolume→ChunkedVolumeStore::write→
buildPyramid→WholeVolumeSource,提供 build/load/selftest 三子命令,
输出建体耗时/维度/体积/压缩比/加载/峰值内存指标(Psapi 峰值工作集)。
selftest 合成数据端到端 PASS。真实明星路数据 BLOCKED:前置 readIprb
的 traces=lastTrace+1 严格校验与真实文件「道数=lastTrace」系统性不符,
装配阶段即抛异常,未擅自改前置/其单测,如实记录于 poc-results-B.md。
|
2026-06-23 12:27:10 +08:00 |
gaozheng
|
b509795ffd
|
docs(gpr): 三维体三方案 spec(A/B/C) + POC 实现计划
B/C 对等双方案(用户运行时按需切换),A 并入 B;含 opus 评审修订
(VTKHDF Writer 写不了规则体→裸分块落盘、量化贯穿、最小真实核外分页器)。
|
2026-06-23 09:38:28 +08:00 |
gaozheng
|
6210d615f3
|
feat(vtk): 异常圈定+保存闭环(#4b)+多项交互修复
#4b 异常圈定→保存→渲染→持久 闭环(异常挂三维体,mock 持久化):
- AnomalyDrawTool:切片平面上圈定多边形(屏幕射线-平面求交落点);左键加点(醒目黄圆点)、
鼠标移动虚线橡皮筋(末点→光标跟手)、双击/右键/回车闭合、Esc 取消、左上屏幕提示;高优先级观察者绘制期独占输入
- AnomalySaveDialog:名称/异常类型(mock)/备注 + 截图预览及尺寸(R50)
- 切片右键「创建异常」接通:圈定→草稿渲染→截图→保存对话框→saveAnomaly(挂三维体)→红色多边形渲染
- onVolumeChanged→reloadAnomalies:体到场重载其异常(= 显示过滤"随数据集"默认档)
- SliceExport 加 captureRenderWindowPng(异常截图,带尺寸);Anomaly 补 exceptionTypeId/remark
交互修复(用户实测确认):
- 生成三维体**按勾选集合**(checkbox)收集源,不再受行高亮/右键项影响(撤销错误的多选子类)
- buildVolume 网格**覆盖全程**:包络过大时放大间距(fitAxis)而非截断 → 跨 TM 多剖面不再丢远端剖面
- 滚轮回退为"推进当前选中切片";点击切片外**取消选中**(取消后滚轮恢复相机缩放)
- 修圈定闭合误触切片:闭合事件提前 abort,避免漏给切片 widget 触发 slice-motion
文档:plans/2026-06-18-vtk-3d-anomaly.md §6 摆放决策(3D异常控制在三维分析区/右侧总表为全集)+§7/§8 状态;
design spec 顶部更正块(异常挂三维体/remarkSourceType=标注形态/无截图字段/独立显隐);HANDOFF 更新到 4a/4b。
编译链接绿(build.bat app exit 0);4b 闭环 + 交互修复已用户实测通过。下一步 4c:三维分析区 3D 异常控制(树+过滤R86-87+VTK选中联动R84+显隐+删除)。
|
2026-06-18 18:31:46 +08:00 |
gaozheng
|
4e1b8e7635
|
feat(vtk): 异常3D基础(#4a)-Anomaly补3D几何+buildAnomaly3D+视图异常方法+Api mock持久化(挂三维体)
异常功能地基(对象→三维体→异常;异常挂三维体非切片,见记忆 vtk-3d-persistence-structure):
- core::Anomaly 补 id/volumeDsId(=remarkSourceId)/consortiumId/worldPts(3D世界点)/planeNormal·planeOrigin,
保留 2D localPts(剖面详情兼容)
- render::buildAnomaly3D(单异常→世界坐标 点/折线/闭合多边形 actor,不翻y/不压z;抽 buildActor 共享 2D/3D)
- I3dSceneView + VtkSceneView:addAnomaly/removeAnomaly/clearAnomalies/setAnomalyVisible(按 id 跟踪 actor,
worldPts 已含VE 故不再 SetScale;clear 一并清异常)
- Api3dRepository:StoredAnomaly + saveAnomaly/loadAnomalyTree(按 volumeDsId 过滤+consortiumId 分组异常体)/
deleteAnomaly/deleteAnomalyGroup 内存 mock(取代 stub onErr)
同时修复测试漂移(此前 3a 加 isVolumeDataset 纯虚 + 3c 改 loadVolume 回调签名后,geopro_tests 一直未随之更新):
- FakeView 补异常方法;FakeSceneRepo 补 isVolumeDataset(可配置 volumeIds)+修 loadVolume 签名
- test_3d_repo loadVolume 回调改 (VolumeGrid,ColorScale)
- 控制器测试 View3DWithVoxelAddsVolume 按新"类型分流"语义重写为 View3DVolumeDatasetAddsVolume(体素XOR帘面)
编译全绿(build.bat all);228/228 单元测试通过。4a 为地基(无 UI 接线、尚不可见),圈定/保存见 4b。
|
2026-06-18 13:04:14 +08:00 |
gaozheng
|
b261374cc9
|
feat(vtk): 客户端生成三维体流程(#1)-多源IDW插值+按类型分流体素/帘面
- core::buildVolume 共享管线(散点→GridSpec→IDW→值域),LocalSample/Api 同源,消除调参漂移
- VolumeBuildParams:参数必存(源ds+插值模型/参数+色阶);不冻结gridSpec,改用"源ds锁定"不变式(留校验TODO)
- Api3dRepository:内存体存储 + createVolume/volumeRows/isVolumeDataset + 多源loadVolume
(复用loadSection走inversion.grid,竖向=g.y高程,与帘面构造性对齐;绕开scatter端点y/z语义坑)
- loadVolume 回调改交付(VolumeGrid, ColorScale):体色阶=源剖面色阶(mock体在dsRepo无条目)
- UI:Column3DDataset(源数据栏)多选+右键「生成三维体」+ VolumeParamsDialog(IDW;克里金占位)
- 生成的体归三维分析栏(Column3DAnalysis,设计§2.1),非数据集栏;main.cpp 两栏勾选聚合下发,体不被后端刷新冲掉
- VtkSceneController 按 isVolumeDataset 分流体素/帘面,取代失效的全局 showVoxel/showCurtain
编译链接绿(build.bat app exit 0);未GUI实测(Claude无法验VTK渲染)。设计/计划见 docs/superpowers/plans/2026-06-17-vtk-3d-volume-create-flow.md
|
2026-06-17 20:56:07 +08:00 |
gaozheng
|
f407c0adbc
|
docs(vtk): P5计划修正——dd_grid是白化数据点表(非地图面),2D可渲染仅轨迹线+底图
|
2026-06-16 21:21:18 +08:00 |
gaozheng
|
cc53a74b88
|
docs(vtk): P5 二维数据集栏渲染+天地图底图 实现计划
|
2026-06-16 21:18:42 +08:00 |
gaozheng
|
01a8c0ae03
|
docs(vtk): 三栏结构重构实现计划(10任务:抽屉/三栏widget/维度过滤/全屏/装配)
|
2026-06-16 14:57:15 +08:00 |
gaozheng
|
c44203d6ca
|
docs(plan): P3 三维分析切片交互(核心)实现计划
|
2026-06-16 07:52:13 +08:00 |
gaozheng
|
2c204a134a
|
docs(plan): P2 三维数据集栏(坐标轴/比例/快捷视图/Zoom)实现计划
|
2026-06-15 21:19:02 +08:00 |
gaozheng
|
918088e67a
|
docs(spec): VTK 3D spec v2(纳入评审+web实地分析) + P1复活渲染计划
- spec v2: 纳入架构评审硬伤修正(Scene加vtkProp入口/接口异步/任意切片钉死vtkImageReslice/去裸数组出参)
- 新增§1.5 web实地分析: web 3D=ThreeTile(Three.js)地球+多瓦片源;3D结果=2D反演剖面成帘面
- 关闭开放问题: 三栏=客户端新设计(web无三栏)/异常=切片面2D多边形/底图多源已确证
- 新增 P1 计划: VtkSceneController + I3dSceneRepository(LocalSample异步) + Scene加vtkProp, TDD分6步
|
2026-06-15 14:01:11 +08:00 |
gaozheng
|
85e455ae4b
|
feat(workbench): 对象/数据集交互对齐规格 + 属性面板可编辑保存
提交体按 bundle/OpenAPI 源码确证修正(替换早期推断版本):
- 新建/编辑 GS:{gsTypeId,parentId(仅新建),projectId,name,responsiblePersonName,properties}
- 新建/编辑 TM:{tmTypeId,id?,name,properties,projectId,parentId,parentType:"1"}
- 去除误用的 typeId/type/structParentId/structParentConfType
动态表单:
- displayComponentType 全集控件映射(1-11 + 默认步进数字)
- requiredType 语义:1=必填、2=只读禁用、其他=可选
- 顶层固定字段(gsTypeId/tmTypeId/name/responsiblePersonName)
新建对象:
- 单弹框 + 框内类型下拉,选后刷新动态表单(GS/TM 对称)
- 方法类型用全局 project/tmList;GS 类型用 project/gsList
- 父对象按节点类型解析:选 TM 仅新建同级 TM(父=其GS/根);项目根按 GS 处理
- 对象树右键 + 面板「添加+」按钮按节点类型分项
属性面板可编辑保存:
- 对象属性面板可编辑 → PUT gsObject/tmObject
- 数据集属性面板:元字段只读 + 描述可编辑 → updateDsObject
{dsObjectId,description,attachedParameters:{deltaContent}}
数据集:导入向导(multipart) + 模板导出对话框(templateExport/export)
文档:spec(§B 提交体/§E 源码补全) 与 plan 同步更新
|
2026-06-15 11:52:41 +08:00 |
gaozheng
|
1f0081ee34
|
feat(workbench): 对象/数据集视图交互 — 右键菜单/筛选/删除 + 动态表单编辑保存与新建TM
Batch1(骨架+读联动+删除+筛选):
- ApiClient 补 putJsonAsync/deleteAsync
- 删除 GS/TM/DS(真实 DELETE + 确认框 + 成功刷新)
- 对象树右键菜单(9项)/数据集右键菜单:属性·异常详情·详情联动接现有面板;显示隐藏/定位等 2D/3D 占位
- 快速筛选器(对象按类型批量勾选/反选;数据集按类型+创建日期客户端过滤)+ 数据集单击 tooltip
- 复选框手势修复:点勾选不再触发"选中"重载(viewport 事件过滤 + 复选框命中判定)
Batch2(动态表单引擎+写操作):
- DynamicFormEditor:getDynamicForm schema 驱动(comp1/4/6/7/8 + 必填校验 + properties 预填)
- ObjectFormDialog:拉真实表单→校验→提交
- 编辑保存 PUT /business/{gs|tm}Object(成功刷新,失败回显后端 msg)
- 新建 TM:queryTmType 选型→空表单→POST(带父 GS 上下文)
- 插件子菜单:列出真实 model/list(启动缓存)
数据层:
- EditableForm/TmTypeOption/ModelInfo DTO + parseEditableForm/parseTmTypes/parseModels
- StructNode.typeId;repo loadEditableForm/queryTmTypes/submitObject/listModels;controller currentProjectId()
注:保存/新建请求体为推断(OpenAPI 未文档化提交 body),待真实提交验证后定版。
docs: plans/2026-06-13-object-dataset-interactions.md, specs/2026-06-13-batch2-object-dataset-dialogs.md
|
2026-06-13 20:03:30 +08:00 |
gaozheng
|
a00aeb9a56
|
feat(dataset-detail): 按类型渲染引擎 + inversion 迁移 + dd_ert_measurement_data 详情
将数据集详情从硬编码 ERT 反演重构为通用「ddCode→页签→视图kind」渲染引擎,
把已验收的 dd_inversion_data 迁入新引擎(渲染零变化),并在引擎上实现
dd_ert_measurement_data(ERT原始数据)详情。
引擎:
- 策略声明页签:IDatasetChartStrategy::tabs()→vector<TabSpec{title,ViewKind,
loaderKey,lazy}> 取代 hasGridPhase();控制器通用化(datasetOpened/loadTab/
tabReady),按页签槽位保留 abort-and-replace + 句柄身份比对 + deleteLater 三件套
- 单一异步句柄 DetailLoad/ApiDetailLoad(QVariant 载荷),仓储 loadAsync(loaderKey,
dsId) 扁平分派;删 ChartLoad/GridLoad/loadChartAsync/loadGridAsync/DatasetLoads.hpp
- 视图 IDetailView{widget,setPayload(QVariant)} + DetailViewFactory 按 ViewKind 实例化;
载荷 Scatter/Contour/TablePayload(core/model/detail/DetailPayloads.hpp)
- Page 按 TabSpec 建页签 + 通用 lazy;inversion 散点/网格迁入,渲染代码未改
dd_ert_measurement_data(③散点伪剖面 + 列表):
- 散点复用 RawDataChartView/ScatterPlotItem:x=斜距/y=伪深度(负向)/色=视电阻率,
连续 cauto(含负离群值),colorBar 取自 colorGradation businessCode=R0&type=3(混合
hex+rgba/AlphaScale::Unit);电极灰菱形(#BEBEBE实心+白描边 size16);A/B/M/N 与电极
浮动 hover;数据点尺寸对齐原版 12px;色阶底部横向(与反演一致)
- 通用 DataTableView(gridHeaderDisplay/filedList+rowList,均衡等宽列+居中+隐藏/显示
开关列);MeasurementDto 解析(散点位置数组 + vmap 摊平)
- 工具条视觉 1:1(信息/框选/显示/隐藏/数据过滤/x·y·v·计算方法下拉/色阶配置/生成视电阻
率/反演运算/另存为);显示隐藏+x/y 下拉轻交互,其余占位
测试 75→138 全绿。Phase0 真实响应夹具 tests/fixtures/dd/*。
|
2026-06-13 10:51:24 +08:00 |
gaozheng
|
10072eb4b3
|
feat(dataset-detail+app): 数据集树/按根分页 + 暗色主题保真 + 详情图保真 + 桌面日志崩溃捕获
本分支累积的数据集详情与桌面端健壮性工作(多轮迭代,已逐项实测/用户验收),一次性提交。
数据集列表树化 + 按根分页:
- 原版数据列表为 el-table 树(派生数据按 sourceShowParentId 挂源「原始数据」下);
DsRow 加 parentId,parseDsRows 解析 sourceShowParentId(回退 parentId),
DatasetListPanel 由 QListWidget 改建 QTreeWidget(卡片委托泛化到 QAbstractItemView)。
- 后端 data/page 按扁平 DS 分页 → 改为客户端按「第一层节点(根)」分页:
loadRowsAsync 加 pageSize,selectObject 一次取全,新增 emitNextDataRootPage 按根切页(5根/页),
loadMoreData 改同步切页;main.cpp 加载更多计数改按根。
暗色主题保真(浅色保持与原版 1:1,仅暗色改 token):
- 新增 ChartTheme::applyChartPlotTheme:按 isDarkTheme() 设 QwtPlot 画布/轴字/网格/零线配色,连 ThemeManager::changed 热切换。
- ColorBarWidget、LoadingOverlay 底色/蒙板/文字同步跟随主题。
详情图渲染保真:
- colorBar alpha 标度修复(混合 hex+rgba 格式,rgba alpha 为 0–1,Bit255→Unit)。
- 散点 cauto 归一化(ColorMapService.setDataRange 解耦色阶形状与数据归一化)。
- 散点 hover 提示(ScatterHoverTip,X/Y/值 3 位小数,canvas mouseTracking)。
- 详情页签用数据名命名。
桌面端日志 + 崩溃捕获:
- Logging:滚动日志 + MiniDump 崩溃捕获 + VEH 抛点符号化;main.cpp GuardedApplication::notify 顶层异常护栏。
- 根 CMakeLists Release 产出 PDB(/Zi /DEBUG);ColorMapService NaN/Inf 守卫。
测试 116→122 全绿(+ParseDsRowsParentIdForTree / DataPaginatesByRootNodeNotFlatCount / 散点/colormap 回归)。
|
2026-06-12 19:00:32 +08:00 |
gaozheng
|
751b486254
|
docs(plan): 异步化铺开(导航+登录)计划 + 其余 dd 类型详情图扩展计划(Phase0 样本探查+策略分派打通)
|
2026-06-11 21:36:18 +08:00 |
gaozheng
|
66541b5ef8
|
docs(plan): ApiClient 异步化(DatasetDetail 路径)实现计划 — 8 任务 TDD/bite-sized,含 net原语/data句柄/控制器/UI遮罩
|
2026-06-11 19:37:29 +08:00 |
gaozheng
|
e0c36e3600
|
docs(plan): 二维图表返工实现计划 v2(QwtPlot 三层分离,9步对照验收)
|
2026-06-11 14:54:57 +08:00 |
gaozheng
|
29cef952fe
|
docs(plan): 数据集详情视图改造实现计划(TDD,7 阶段)
|
2026-06-11 11:16:45 +08:00 |
gaozheng
|
37300d523e
|
docs(plan): 对象单击/勾选驱动三面板 实现计划(TDD,10 任务)
|
2026-06-10 19:48:22 +08:00 |
gaozheng
|
0edfa56ec6
|
docs: 设计规范落地计划 + 基线与偏离记录
|
2026-06-10 15:14:44 +08:00 |
gaozheng
|
6df2c4832c
|
chore(ela): ElaWidgetTools 评估 spike + 全面迁移计划 + 构建 TEMP 兜底
- spike/ela: 隔离 demo 验证 ElaWindow + ADS 内嵌 + QVTK + 明暗切换(Qt6.11.1/MSVC 构建通过)
- CMakeLists: FetchContent 引入 ElaWidgetTools(fork,SOURCE_SUBDIR 仅编库) + 挂 spike
- build.bat: TEMP/TMP 重定向到 D: 构建目录,规避 C: 盘满导致的 LNK1108
- docs: 全面 Ela 化迁移计划(P0-P4 + 控件映射表 + 风险登记)
|
2026-06-09 21:23:14 +08:00 |
gaozheng
|
1fd8bb4d63
|
docs: 保留并解耦中央三维编排(CentralScene helper) + 补充下一轮对接真实DS步骤
|
2026-06-09 10:49:31 +08:00 |
gaozheng
|
46358f2964
|
docs: 接入真实导航 实现计划(plan)
|
2026-06-09 10:28:16 +08:00 |
gaozheng
|
7007619bf2
|
feat(render): DEM 地形+影像贴图(spec ④) + dd_slice 交互切片
- TerrainActor(buildTerrain): GDAL 读 dem.tif(高程)+ image.tif(影像); DEM CRS→4326→
GeoLocalFrame 配准成 vtkStructuredGrid warp 面; 影像经 GDAL 读像素(行翻转正立)作纹理,
按经纬→EPSG:3857→像素 算纹理坐标贴图(影像/DEM 异源 CRS 重投影对位)。影像读失败→按高程上色。
离屏 verify_terrain_3d.png 核对: 卫星影像正立贴微起伏面、配准对位。+2 单测。
- 注: 影像须 GDAL 读(vtkTIFFReader 对此压缩 TIFF 报错"reading the row")。
- dd_slice: 3D「视图详情」加「切片」图层 = vtkImagePlaneWidget 在体素 image 拖切面(spec M1-b)。
- 接入 app: 3D 浮层五图层(帘面/体素/切片/地形); repo.demPath()/imagePath(); PROJ 不可用则禁用。
- vcpkg 加 gdal(连带 hdf5/netcdf/geos 等, 已缓存); 全 40 测试绿; app 构建干净。
- 注: 地形/切片 Z 基准与帘面/体素纵向夸张未统一(spec M-3 待办); dem 低分辨率→起伏细微。
|
2026-06-08 11:25:45 +08:00 |
gaozheng
|
8466fe3a5a
|
feat(view): 剖面电极标记 ▼ + 显示电极/显示等值线 开关(对齐原型, 增量4)
- ElectrodeActor(buildElectrodes): 剖面顶边(最浅深度)各 x 列画朝下三角 ▼; 坐标与 #18 一致。
离屏 verify_section_anomaly.png 顶边电极带核对吻合; +2 单测(三角数/顶点位置/空安全)。
- 数据详情工具条加「显示电极」(默认开,网格数据模式)+「显示等值线」(默认开, gate #18 黑色等值线)。
- 全 38 测试绿; app 构建干净; 待人工登录复核。
- 增量4 剩: 数值标签 / 色阶配置 / 滤波处理(进阶/M1.5)。
|
2026-06-08 09:52:18 +08:00 |
gaozheng
|
a2efef8ada
|
feat(view): 3D「视图详情」图层浮层 + 体素正经接入(对齐原型, 增量3)
- 中央 QVTK 左上浮层(QFrame, 仅三维显示, 工具条下方, raise 置顶): 图层勾选「帘面 / 体素」。
- rebuildCentral: 帘面层 gate buildCurtain; 体素层 → buildVoxelFromScatters 体绘制(同纵向夸张)。
showCurtain(默认开)/showVoxel(默认关)/crs 共享态; 切视图自动显隐浮层。
- 体素经此正经接入(取代 42a7ed1 移除的困惑工具条开关, 这才是它对齐原型的归宿)。
- main() 自动定位 PROJ_DATA(候选路径; 部署须随包附带 proj 数据); PROJ 不可用→体素勾选禁用+提示。
- app 构建干净; 待人工登录复核(浮层渲染于 QVTK 之上 + 勾体素出十字片)。
|
2026-06-08 09:42:09 +08:00 |
gaozheng
|
50c4de4019
|
feat(view): 左下数据列表 + 对象树收到测线层(对齐原型, 增量2)
- 对象树 GS→TM(测线复选, UserRole+2=tmId); DS(采集批次)移出树, 入左下「数据真实显示栏」
(QTabWidget 数据/文件; panels/DatasetListPanel)。findTm 按 tmId 查 TM。
- 中央 rebuildCentral 改遍历勾选的测线 → 渲染其 dd_section(可多条共存)。
- 树单击测线→填数据列表; 数据列表单击采集批次→loadDataset(数据详情+异常列表+属性,抽共享 lambda)。
- 启动自动选首个含 dd_section 的测线 + 首数据集(对齐原型默认载入态)。
- structure 取一次共享; app 构建干净; 待人工登录复核。
|
2026-06-08 09:33:06 +08:00 |
gaozheng
|
127e9a0b21
|
feat(view): 右上异常列表面板 + 与数据详情异常显隐联动(对齐原型, 增量1)
- panels/AnomalyListPanel(populateAnomalyList): 颜色块 + 名称(类型) + 由 location.coordinate
派生「位置 Xm·深 Ym·尺寸 Zm」; 可勾选(默认显示), UserRole 存异常下标。
- 右侧 dock 拆上下: 右上「异常列表」/ 右下「属性」(补"异常 N 个")。
- 单击数据集→重填列表(QSignalBlocker 防回灌)+ 清空隐藏集; 勾选变化→更新 hiddenAnoms
→ rebuildDetail 逐异常按下标过滤显隐(取消勾选→该异常虚线隐藏)。
- 计划落地 plans/2026-06-08-m1-prototype-layout.md(六面板对齐原型, 增量序列); STATUS §6.10 更新。
- app 构建干净; 待人工登录复核交互。
|
2026-06-08 09:24:11 +08:00 |
gaozheng
|
42a7ed16d4
|
fix(app): 移除令人困惑的「体素」工具条开关(与二维/三维平级且不在原型)
- dd_voxel 体素引擎(buildVoxelFromScatters)保留:已 PNG 核对 + 单测验证,是合格积木。
- 但把它做成中央工具条开关是设计失误:与"二维/三维"互斥视图平级却是复选、且仅 3D 生效,
令人困惑(重蹈上会话"2维/3维/体素混淆"覆辙),且原型中央只有「二维地图|三维视图」。
- 中央恢复干净两视图(对齐原型)。体素待做 3D 图层控制(对齐原型「视图详情」浮层)再正经接入。
- 同步移除 app 内 CrsTransform/PROJ_DATA 等仅为该开关的接线; render 层引擎与测试不动。
|
2026-06-08 09:13:25 +08:00 |
gaozheng
|
9b77d07359
|
feat(render): dd_voxel 回归 — 散点经 EPSG:4547 配准到世界系成体素 + 3D 接入
- buildVoxelFromScatters(VoxelFromScatters): 两交叉测线散点(projX/Y) 经
CrsTransform(EPSG:4547→4326) → GeoLocalFrame 局部米 + 深度(-ylist) 配准到帘面/地图
同世界系, IDW(maxDist 裁剪 NaN 留空) → buildVoxel; 暴露 image 供后续 dd_slice。
- 离屏核对: verify_voxel_top.png 两臂支撑吻合 Python 真值 voxel_hslice;
verify_voxel_3d.png profile1 片贴合帘面(同系配准正确)。
- 接入 app: 中央工具条「体素」开关(仅 3D 有效, 默认关), 与帘面同纵向夸张叠加。
main() 按候选路径自动设 PROJ_DATA(部署须随包附带 proj 数据)。
- 新增 VoxelRegister 单测(需 PROJ_DATA, tests CMake 已注入); 全 36 测试绿。
- 注: 仅 2 交叉线→薄十字片(15.9% 充填), 体绘制半透明偏淡(低不透明度固有);
可信满体需≥3线(设计 §10/§14)。dd_slice 交互切片未做。
|
2026-06-08 09:05:27 +08:00 |
gaozheng
|
d4b4a4bc64
|
feat(render): 异常叠加(AnomalyActor) + 数据详情命名对齐原型
- AnomalyActor(buildAnomalies): 按 markType 点(vtkVertex)/线(开放polyline,dashed)
/面(闭合polyline轮廓), 每异常一 actor 带自身 lineColor/width/dashed; 坐标(x,-y,0)
与 #18 同空间。离屏 verify_section_anomaly.png 折线位置吻合 Python 真值 ref_18。
- 接入 app 数据详情: 「显示异常」开关(默认开)叠加在 #18/#17 上(同纵向夸张对齐)。
- 按原型(prototype.geomative.cn)重命名数据详情切换为「原数据/网格数据」并调顺序。
- 新增 test_anomaly 4 例(线/面闭合/点/空跳过/颜色/y取负); 全 35 测试绿。
- STATUS §6.10 记录原型权威布局与待对齐项(左下数据列表/右上异常列表/电极/底图)。
- 注: dashed 点画在 VTK OpenGL2 下偏弱(几何/颜色/位置正确), 纯观感项后续调。
|
2026-06-08 07:56:25 +08:00 |
gaozheng
|
f51fe44533
|
feat(render): 散点#17(ScatterActor) — 数据详情「反演剖面/原数据」切换
- ScatterActor(buildScatter): ScatterField+ColorScale → vtkPolyData 彩色方块散点
(x=距离/y=深度取负, 与#18同坐标系; 点标量+LUT, 色阶范围优先colorBar真实分段值)
- 离屏 verify_scatter.png 核对吻合 Python 真值 ref_17(三角拟断面/顶部深蓝/右侧紫)
- 接入 app 数据详情: 工具条「反演剖面(#18)/原数据(#17)」互斥切换, rebuildDetail 统一重建
- LocalSampleRepository.loadScatterColorScale: 散点自带色阶(范围/分段与网格色阶不同)
- 修复陈旧测试 test_curtain(断言改为 vtkPolyDataMapper+banded 非空 polydata)
- 新增 test_scatter 2 例(点数/verts/上色/y取负/退化安全); 全 31 测试绿
|
2026-06-08 07:43:49 +08:00 |
gaozheng
|
95bc521f49
|
docs: 同步 spec/STATUS/plan 至正确视图模型(二维地图=测线线/三维=竖直帘面/数据详情=#18; 体素搁置CRS; 渲染须离屏PNG核对) — 供下次会话接续P4
|
2026-06-07 23:40:55 +08:00 |