gaozheng
|
b497fe547c
|
fix(ui): 分段树修复(批2)-选中高亮统一对象树+结构还原TM挂载+缩进一致
- #2 DatasetCardDelegate 选中/hover 改与对象树(ObjectRowDelegate)一致:整行方角填充
(去圆角卡)+左2px accent竖条满高+选中标题加粗;保留双行卡片(创建时间·类型副标题)
- #4 CategorySection 树结构:派生 ds(反演剖面)带派生父指向已被筛掉/属别段的原始 ds 时,
按 parentId 挂载失败→ds 浮到根平铺。改:派生父在本段保留嵌套(体>切片),否则回退挂
结构容器 structParentId(TM),还原 项目/GS/TM/DS 真实层级
- #6 三维体段体相对TM缩进过大:容器节点(项目/GS/TM)不画复选框但保留同宽复选框列,使
各级缩进只差一个树级(原先容器无列宽→子级带框缩进多撑出复选框列宽),与对象树一致
构建:app 链接通过
|
2026-06-25 16:46:32 +08:00 |
gaozheng
|
a2770ba49d
|
fix(vtk): 坐标轴设置交互修复(批1/#5)-增量渲染+VE滑块+隐藏轴全隐+关闭按钮
- 5.1 关闭按钮空白:全局 QPushButton padding(6px14px) 挤掉 ×,显式 setStyleSheet padding:0
- 5.2 取消某轴「显示」时禁用其 min/max 编辑框(show toggled→lo/hi setEnabled,回灌同步)
- 5.3 隐藏轴后刻度数字仍在:SetXAxisVisibility 只关线,补 SetXAxisLabelVisibility/TickVisibility
- 5.4 应用即全量重绘→改增量:setAxesConfig 不再 rebuildInternal(clear场景),改
view_.setAxes+setAxesRanges+renderIncremental(仅重建坐标轴 prop,不动数据/相机)
- 5.5 放大系数下拉→滑块(1~10×,恢复重构前交互):拖动实时改标签,sliderReleased 才发
verticalExaggerationChanged 触发一次重建(VE 改几何须重建但不在拖动中连续重建)
main.cpp 接 applied(去scale) + verticalExaggerationChanged(→控制器+底图)
构建:app 链接通过
|
2026-06-25 16:39:48 +08:00 |
gaozheng
|
70f77c1736
|
refactor(vtk): 退役旧三维数据集/三维分析栏(Task 12 #6)-删 Column3D* 及全部死接线
旧 col3D_/colAnalysis_ 自分段重构后已 hide() 不入 tab、运行时不发信号,其 18 处
connect 全为死接线。本次彻底退役:
- 删 main.cpp 中 10 个 c3(Column3DDataset)+7 个 ca(Column3DAnalysis)+1 个 col3D() VE 接线
- 删 ColumnDrawer 的 col3D_/colAnalysis_ 成员/访问器/实例化/include/前向声明
- 删 4 个源文件 Column3DDataset.{hpp,cpp} / Column3DAnalysis.{hpp,cpp} + CMake 条目
唯一运行时仍在跑的 ca 消费是 refreshAnomalies(读 anomalyFilterMode 写 setAnomalies):
档位改恒「全部显示」(=隐藏 ca 的当前等效行为),异常列表已由 refreshAnalysis 经
voxelTree 全量注入新分段 tab,故去掉 ca->setAnomalies。零可见回归。
已知遗留(旧栏退役暴露,均非本次引入,待新分段段补 API):
- 新建/关闭切片不再自动勾选/取消列表(CategorySection 无 setItemChecked)
- 异常显示过滤档位、列表选中→VTK高亮(R84)随 ca 信号退役,待新段补信号
构建:configure+app 链接通过;测试 isolated 全绿(AsyncRegionBuilder 预取测试满载 flaky,
隔离复跑 3/3 过,属 GPR 域与本次无关)
|
2026-06-25 15:52:14 +08:00 |
gaozheng
|
572fbf8d7b
|
fix(ui): 容器节点紧凑卡(矮+居中+小留白)+所有段从项目根树形(自剪枝)+体/切片创建时间+筛选行去采集(日期前装置后)
|
2026-06-25 14:47:58 +08:00 |
gaozheng
|
6c8069b87d
|
feat(vtk): 坐标轴设置真正生效-单位(米/英尺)换算+每轴显示开关+自定义刻度范围 打通 render→controller→view→面板
|
2026-06-25 14:16:27 +08:00 |
gaozheng
|
0cfa1ad352
|
feat(ui): 坐标轴设置改抽屉面板(工具条右侧滑出)+补坐标轴单位/放大系数(按原型图)
|
2026-06-25 14:01:45 +08:00 |
gaozheng
|
1b13caa75f
|
fix(vtk): 连续勾选两个 ds 不渲染(取景意图按'是否已有数据到场'判定,非 checkedDs_ 空)
|
2026-06-25 14:01:44 +08:00 |
gaozheng
|
7bdb291fb4
|
fix(gpr): 修世界网格路径短线建体失败(007 深度0 网格无效)
根因:CGCS easting 含带号约 4.0e7 米,存入 QVector3D(float32)后该量级
ULP 约 4 米;近正北短线 007 的东向跨度仅 0.81 米被浮点量化抹平成同值,
CScanGridder 内 maxX<=minX 判退,返回空网格触发「深度0 网格无效」。
桥接层修法(不碰 verbatim 算法):存入 float 轨迹前先平移到局部原点
(首点 floor 到整米),坐标降到约 10^2 米量级,float 亚毫米精度无损;
CScanGridder/TrajectoryCalculator 全程仅用差分/距离/IDW,对常量平移不变,
输出与未平移一致;最后把平移量加回 built.origin 还原真实 CGCS2000 世界米。
007 建成 23x347x195(东x北x深,78.5% 填充);001 不回归(18x1451x199,
world origin 与基线 sub-meter 一致);external/gpr3dviewer 算法文件零改动。
|
2026-06-25 13:43:55 +08:00 |
gaozheng
|
778ffe88c0
|
feat(ui): 三维体段右键全接旧栏操作-体(生成切片/色阶) 切片(保存/另存/导出图片dat/色阶/删除) 异常(显隐/删除)
|
2026-06-25 12:33:22 +08:00 |
gaozheng
|
eb50a87694
|
fix(ui): 右键菜单限三维体段+容器节点去复选框+容器树剪枝(只展示有体路径)
|
2026-06-25 12:17:50 +08:00 |
gaozheng
|
888a63081b
|
feat(ui): 三维体段从项目根完整层级树(容器节点+体挂归属)+段体右键菜单(详情/删除切片异常)(界面修复 4/5)
|
2026-06-25 11:50:17 +08:00 |
gaozheng
|
c2f2b1f94c
|
feat(ui): 日期范围筛选控件(双日历面板/可清空/默认今天)替代单 QDateEdit(界面修复 1/2/3)
|
2026-06-25 11:41:23 +08:00 |
gaozheng
|
2e4e4b24e4
|
fix(login): 验证码图原尺寸清晰显示(去放大缩放,避免糊导致看错字符)
|
2026-06-25 11:18:44 +08:00 |
gaozheng
|
4f205528ad
|
fix(login): 删多余 verifyCodeCheck 步(原版实测=getImageCode→login2 直连)修 verificationCodeExpired + AuthLive 跳过(验证码改图片)
|
2026-06-25 10:51:04 +08:00 |
gaozheng
|
f713c15366
|
feat(gpr3dv): 移植精确坐标/轨迹/世界网格(CGCS2000)+测绘级逐线世界对齐建体
复制 CoordinateTransform/TrajectoryCalculator/CScanGridder/PosParser(逐字节一致)进
external/gpr3dviewer;新增 Gpr3dvSurveyVolumeBridge 按 CGCS2000+逐道GPS轨迹建世界对齐体;
gpr_poc 加 build-survey-all/view-survey-all(各体自带世界origin,精确就位跟GPS弯)。
|
2026-06-25 10:41:02 +08:00 |
gaozheng
|
ccd3040a67
|
fix(login): login2 补 checkCode=用户输入验证码 + codeId(修 checkCodeNotNull)
|
2026-06-25 10:30:20 +08:00 |
gaozheng
|
289b83cd35
|
fix(login): 验证码改为显示后端 getImageCode 的 base64 图(data.image),客户端不再自画(后端已不回明文 code)
|
2026-06-25 10:21:14 +08:00 |
gaozheng
|
df25836cbd
|
fix(ui): VtkViewToolbar 重做-三段(设置|视图|缩放)+图标(Gear/Plus/Minus/Fit)+悬浮画布(界面修复 2 一版)
|
2026-06-25 09:47:21 +08:00 |
gaozheng
|
a990f2ea90
|
fix(ui): 左面板 QSplitter 可拖改宽(min180/max560)+禁横向滚动条(界面修复 1)
|
2026-06-25 09:41:06 +08:00 |
gaozheng
|
beb398d478
|
fix(ui): 生成按钮移标题行+采集时间改时间段(不限)+切片不单列段(挂三维体树)(界面修复 3/4/5)
|
2026-06-25 09:34:19 +08:00 |
gaozheng
|
d70590cbef
|
feat(data): 逐线 GPR 体反量化适配器 + GprVolumeRepository
新增数据层方案A纯数据通道,把逐线 GPR 处理后 int16 量化体(io::gpr
buildLineVolumeFromGpr3dv 产 BuiltI16)反量化成 app 渲染链吃的稠密 float 体
(data::VolumeGrid),使真实雷达三维体可经现成 loadVolume->addVolume->buildVoxel
显示(替 mock),零碰并行会话 UI/树/异常热文件。
- builtI16ToVolumeGrid:纯函数适配器,逐体素 Quant::toPhys 反量化,
kBlank 空值哨兵->NaN(下游 buildVoxel 映射透明),origin/spacing/vmin-vmax 搬运。
- createGprVolumeGrid(lineDir,linePrefix,coarse=4):走 P1/P2 链建逐线体->适配。
- 单测:适配器逐值反量化/维度/spacing/origin/kBlank->NaN;全链合成多通道
.iprb 走真链产出有效 VolumeGrid;缺线抛异常。434 测试全过,无回归。
|
2026-06-25 09:06:15 +08:00 |
gaozheng
|
4e2bdc3b81
|
feat(gpr): build-line 健壮支持任意测线 + 新增 build-all 批量建体(磁盘守护/coarse 下采样)
- 桥接 buildLineVolumeFromGpr3dv 增 coarse 参数:沿测线(道/X 轴)按步长下采样,
spacing.x ×stride 保持真实世界尺度;通道/样本保留全分辨率。默认 coarse=1 全分辨率,
对现有调用与测试零影响。
- build-line 增 --coarse F;单线建体核心抽出 buildOneLine,加体维度退化守护
(短桩线 nx<2 等报因跳过不落盘),整条 try/catch 不崩。
- 新增 build-all <lineDir> --outBase <baseDir> [--levels N] [--coarse F]
[--minFreeGB G]:扫 *_A<NN>.iprh 发现全部测线,逐条建到 baseDir/<line>/;
每条建前查磁盘剩余,低于阈值(默认 3G)停并报已建哪些;单条异常捕获跳过不中断批量;
末尾打印各线状态(成功/跳过+因/维度/大小)与合计占用。
- 通道/道/样本全从数据读,不写死;不破坏现有 gpr/bridge 测试(12/12 通过)。
|
2026-06-25 08:42:31 +08:00 |
gaozheng
|
b9a655126f
|
feat: 装置类型枚举接口 listArrayTypes→填字典→段头装置下拉显示+过滤(Task12 #2)
|
2026-06-24 21:45:38 +08:00 |
gaozheng
|
a41b428b09
|
feat: VolumeParamsDialog 扩展-左侧源列表(可增删)+生成位置下拉(GS/TM)+req归属(Task12 #4)
|
2026-06-24 21:37:33 +08:00 |
gaozheng
|
cfd242c106
|
feat: 异常双击详情接入三级树(anomalyById→AnomalyPropertiesDialog)(Task11 Step4b)
|
2026-06-24 21:24:48 +08:00 |
gaozheng
|
1d744bab81
|
feat(app): 对象树拉取改 checkedSourcesChanged+confType 分流(支持 GS 直挂 ds)(Task12 #1)
|
2026-06-24 21:13:28 +08:00 |
gaozheng
|
6edfad9a2f
|
feat(app): VtkViewToolbar 接入中央画布(view/zoom/fit + axesSettings 弹窗)(Task12 工具条)
|
2026-06-24 21:10:09 +08:00 |
gaozheng
|
2f07e605c8
|
feat(app): 三维体段「体→切片/异常」三级树注入 + 异常排除渲染勾选 + 创建异常即时进树(Task11 Step4a)
|
2026-06-24 20:59:21 +08:00 |
gaozheng
|
a32822f7d6
|
feat(gpr3dv): 桥接处理后立方体→geopro量化/分块/VTK体绘制(P2 渲第一条线真三维体)
把 gpr3dv(P1)处理链产出的处理后立方体桥接到 geopro 已有的量化+ChunkedVolumeStore
+VTK 体绘制,渲出第一条线(明星路_001)的真三维体。算法零改动,仅复用 geopro 量化/
store/渲染。
- 新增桥接 src/io/gpr/Gpr3dvVolumeBridge.{hpp,cpp}(独立 target geopro_gpr3dv_bridge,
不污染纯 C++17 解析层):走 P1 原版 API load→buildVolumeData→runPipeline(默认链)
→再 buildVolumeData(处理后),得 volumeData[通道][道][样本];轴映射 X=道/Y=通道/
Z=样本;扫值域定 Quant(offset=中点);世界 spacing(dx=道距/dy=通道横距/dz=深度采样距)。
- gpr_poc 加子命令 build-line <lineDir> <linePrefix> --out <store> [--levels N]:
桥接→ChunkedVolumeStore::write+buildPyramid,报维度/量化/spacing/内存/耗时;view 渲。
- 测试 tests/io/gpr/test_gpr3dv_volume_bridge.cpp:合成 2 通道 Impulse 测线走真链,
校验轴映射/spacing/量化(offset=中点)/稠密体无 kBlank/缺线抛异常。
真实数据验收(明星路_001):体维度 45305×14×796(道×通道×样本,样本由 821 经零时校正
裁至 796),处理后值域[-9249,9206] scale=0.288 offset=-21.5,spacing dx=0.049/dy=0.105/
dz=0.0101m,落盘 845MB 压缩比 1.14x;view --preview/--base 渲出无纹理错、整卷盖全。
全量测试通过。
|
2026-06-24 20:50:10 +08:00 |
gaozheng
|
8b57dd9679
|
feat(app): 创建异常按所在切片是否已保存挂体/切片(resolveAnomalyMount, Task11 Step3)
|
2026-06-24 20:49:19 +08:00 |
gaozheng
|
07be3aef21
|
feat(data): Api3dRepository.anomalyRows 按 remarkSourceId 供三级树注入(Task11 Step2)
|
2026-06-24 20:45:55 +08:00 |
gaozheng
|
52830bbcb0
|
feat(core): Anomaly volumeDsId→remarkSourceId(挂体/切片)+resolveAnomalyMount+修正spec/plan命名(Task11 Step1)
|
2026-06-24 20:37:45 +08:00 |
gaozheng
|
901c84e0ae
|
feat(app): 接通对象树→splitByCategory→三维分析5段数据流+勾选分流渲染+生成入口(Task12 阶段A)
|
2026-06-24 19:49:18 +08:00 |
gaozheng
|
a06d9e83f8
|
feat(data): createVolume(VoxelGenerateRequest) 重载+fromRequest 派生+请求体打印(mock)
|
2026-06-24 19:24:39 +08:00 |
gaozheng
|
3af7e44722
|
feat(ui): VtkViewToolbar 画布工具条 + AxesSettingsDialog 坐标轴设置
|
2026-06-24 19:18:34 +08:00 |
gaozheng
|
98114a36e0
|
feat(ui): CategoryAnalysisTab(QScrollArea 5段)+ColumnDrawer 两tab(旧栏隐藏过渡)
|
2026-06-24 19:14:51 +08:00 |
gaozheng
|
30e990d967
|
feat(ui): CategorySection 类型段组件(段头装置/日期筛选+段体可勾选树+生成入口) + DatasetFieldDictionary 缓存类
|
2026-06-24 19:10:03 +08:00 |
gaozheng
|
40646f7d06
|
refactor(tree): 评审修复-抽 recomputeAllGsStates 去 nullptr 信号 hack + 注释精确化
|
2026-06-24 18:15:03 +08:00 |
gaozheng
|
c5b3907fad
|
feat(data): DatasetFieldDictionary 解析 arrayType/collectTime 映射+装置字典(纯函数)
|
2026-06-24 18:08:45 +08:00 |
gaozheng
|
1978a31fa7
|
feat(tree): GS 三态状态机(停 AutoTristate)+右键 ds/tm + checkedSourcesChanged 源集合
合并 plan Task 4+5:plan Task 4 右键代码已引用 Task 5 的 emitCheckedSources,
二者均改 ObjectTreePanel 且循环依赖,合并实现避免中间不可编译态。
checkedSourcesChanged 与旧 checkedTmsChanged 并存,Task 12 接线切换后删旧。
|
2026-06-24 18:05:09 +08:00 |
gaozheng
|
f00a2143a2
|
feat(data): VoxelGenerateRequest/SliceGenerateRequest DTO + toJson
|
2026-06-24 17:52:33 +08:00 |
gaozheng
|
07cf75d967
|
feat(app): CategoryConfig 映射表 + splitByCategory 按 dsTypeCode 分大类
|
2026-06-24 17:48:47 +08:00 |
gaozheng
|
5a719ca16d
|
feat(data): DsRow 加 dsTypeCode/properties + parseDsRows 解析
|
2026-06-24 17:40:49 +08:00 |
gaozheng
|
509ba35a47
|
feat(geo): build-geo 新增中心线曲线坐标网格化(--curvilinear)+距离加权
取最长线 GPS 轨迹作中心线,把每点投影得(沿路里程 s,带符号横偏 d),
网格 X=s/Y=d/Z=深度,把弯路拉直消假鳍;横向范围用带符号 d 的[1%,99%]分位
(鲁棒于离群桩线、不浪费空白半侧);重叠按到 cell 中心的距离加权(w=1/(1+d^2))
代替等权均值。保留 PCA 版供对照(curvilinear 默认 false)。
GpsTrack 新增 projectToCenterline/resampleAndSmooth(纯函数,含直/弯线单测);
GeoVolumeBuilder 新增 distanceWeight 纯函数。
真实数据(明星路 20 线,cellXY 0.5):曲线版 4487x45x82 填充 68.8%,
PCA 版 4474x52x82 填充 62.2% —— ny 更小(拉直)、填充更密、假鳍明显减少。
|
2026-06-24 15:24:59 +08:00 |
gaozheng
|
8edc1f30ac
|
feat(vtk): build-geo 按真实RTK几何把多线拼成统一路向三维体
新增 GpsTrack(.gps解析+经纬→局部米+里程插值/航向) 与 GeoVolumeBuilder
(PCA路向旋转+多线统一网格重叠均值+量化落盘), gpr_poc 加 build-geo 子命令。
消除顺序拼接退化扁带: 真实明星路20线建体 4474x52x82(≈预测4472x43x81),
填充率62%, 旋转-89.5°, 峰值内存258MB, 各轴≤16384整卷单纹理可渲。
复用 readIprb/IprHeader/GprGeometry/ChunkedVolumeStore/Quant, 未重造IO/store。
|
2026-06-24 12:34:07 +08:00 |
gaozheng
|
fb944f706f
|
feat(vtk): 常驻粗底图+局部高清叠加(永不空白)
ViewAdaptiveVolumeSource 构造时一次性在主线程建整卷最粗「各轴≤16384」层
单纹理底图 baseImage(),永远持有、永不释放、绝不被异步路径触碰——任何视角/
任何运动中底图都盖住整个体,拖动/缩放绝不空白。高清(currentImages)异步重组
当前视野后叠在底图之上局部覆盖,未就绪时只显底图。gpr_poc view 用两个 vtkVolume
(底图先渲、高清叠加),新增 --preview --base 出整卷概览底图截图。为 morph(C3-4)/
运动跟踪(C3-7)打两层结构。
|
2026-06-24 12:03:10 +08:00 |
gaozheng
|
ced2ca7811
|
feat(render): AsyncRegionBuilder 就绪缓存LRU+预取+相同目标短路
C3-3:为 AsyncRegionBuilder 加按 RegionTarget 键的有界 LRU 就绪缓存
(容量N默认6)、prefetch 后台低优先预取(不抢占主目标)、getReady 非阻塞
缓存命中,并短路 requestTarget 相同目标(修 C3-2 LOW)。worker 每轮主
目标优先,否则建预取队列最新;缓存/refcount 增减全在锁内,析构干净 join。
ViewAdaptiveVolumeSource:updateView 提交主目标后预测下一目标(细一层
同区+沿相机方向平移一格 brick 列)并 prefetch;currentImages 走
getReady(主目标)命中即用否则沿用上一张。线程安全延续 C3-1。
|
2026-06-24 10:37:12 +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
|
fa34cb0bc3
|
feat(render): C3-1 AsyncRegionBuilder 后台异步重组 + 双缓冲交接
抽公共重组核 reorganizeRegion(RegionReorganizer.{hpp,cpp})为单一真源:
C2 ViewAdaptiveVolumeSource 改委托、C3 AsyncRegionBuilder 也调它(真 DRY)。
AsyncRegionBuilder:后台 worker 调重组核构建 vtkImageData,主线程非阻塞
takeLatest 取最新就绪;requestTarget supersede 收敛最新不堆积。线程安全:
vtkImageData refcount 增减全在 mutex 内/单线程独占,析构置 stop 唤醒干净 join。
测试:5 个异步用例(同步一致/supersede 收敛/析构忙时干净 join/并发 400 次不崩
不死锁/takeLatest 非阻塞)全绿;C1+C2 的 17 个 ViewAdaptive* 抽核后回归全绿。
|
2026-06-24 09:56:55 +08:00 |
gaozheng
|
fc9ea58cb5
|
feat(vtk): ViewAdaptiveVolumeSource 视野区域单纹理重组(C2)
用 C1 selectLod 选层选区,从 ChunkedVolumeStore 把当前视野区域重组为单张
VTK_SHORT vtkImageData(各轴 ≤16384,世界 origin/spacing 按 level+exagg),实现
IVolumeRenderSource。核心 updateView(CameraView,VolumeView) headless 可测。
gpr_poc view 切到该源(退掉 MultiBlock/budget 简化路径),--preview 渲默认视角存
PNG,--smoke 离屏不崩且 LOD 随缩放切换。
|
2026-06-24 09:24:31 +08:00 |