三处缺陷,均由「勾选二维数据集 → VTK 看不到渲染/底图」串起: 1) 摆放默认关闭致足迹静默丢弃 Column2DDataset「2D视图」下拉可见默认项为 Z=0(setCurrentIndex(1)), 但该初始信号在 connect 前发射、且组件早于 main.cpp 接线构造 → 永不送达控制器, 控制器 placement2dMode_ 仍为 0(关闭),勾选被记录却不入场(setChecked2DDatasets 守卫 placement!=0 不通过)。改:控制器默认 1、main.cpp view2dMode 默认 1, 与下拉可见默认项对齐,彻底摆脱对信号时序的依赖。 2) 足迹未重锚 frame → 投到数百公里外、移动视角也找不到 GeoLocalFrame 启动锚在样本 grid1 中位经纬;addCurtain 会重锚到剖面真实经纬, 但 addMapLine 未重锚 → 台湾足迹(经120.8/纬24.7)按样本锚点投到世界原点数十万米外。 改:抽出 anchorFrameIfNeeded(剖面/足迹共用),首个带经纬数据(无论帘面或足迹) 重锚原点;控制器 setChecked2DDatasets 在空场景首批足迹时取景(fitOnArrival)。 3) 台湾区天地图卫星只覆盖到 z16,z17/z18 返回固定「无影像」占位图 底图四叉树拉近时细分到 kMaxZoom=18 → 台湾中心瓦片全是占位图(实测 z17/z18 字节恒等 size=4769/MD5 c0edbdcb,z16 为真实影像;内地有 z18 故正常)。 改:TileBasemap 加自适应 satMaxZoom_,isTiandituNoImagery 按 大小+MD5 精确识别 占位图 → 学习把卫星上限降到 z-1 并重铺(台湾 18→16 收敛,用 z16 真实影像放大); refineTile 卫星层用学习上限,街道矢量仍到 z18;show()/换源复位、refresh 保留。 内地项目零影响(z18 有影像,永不触发降级)。 测试:253/253 通过;新增 TwoDDefaultPlacementRendersAtZeroOnCheck 回归, 原依赖「默认关闭」的两个用例改为显式 set2DPlacement(0)。 |
||
|---|---|---|
| cmake | ||
| docs | ||
| installer | ||
| resources | ||
| scripts | ||
| spike/ela | ||
| src | ||
| tests | ||
| tools | ||
| .clang-format | ||
| .clangd | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| CLAUDE.md | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| NOTICE.md | ||
| README.md | ||
| build.bat | ||
| vcpkg.json | ||
README.md
Geopro 3.0 桌面客户端
地球物理勘探数据可视化桌面客户端(Qt 6 + VTK 9,C++)。复刻 Geopro 3.0 核心「项目分析视图」。
M1 范围、架构与决策见 docs/superpowers/specs/2026-06-07-geopro-desktop-m1-design.md。 上位技术基线见 docs/Geopro3.0_技术选型与架构规约.md。 环境搭建见 docs/ENV_SETUP_Windows.md。
技术栈
Qt 6.11(QtWidgets)+ VTK 9.6 · CMake + Ninja · 官方 MSVC 预编译 Qt + vcpkg(仅非 Qt 依赖)· MSVC(VS 2022/2026)/ C++17 · ADS 停靠 · GDAL/PROJ · OpenSSL · QtKeychain。
目录(设计 §3)
src/core/ 纯业务,零 Qt/VTK
src/data/ Repository + 解析器
src/net/ ApiClient / AuthService / Credential
src/render/ VTK 场景与 actor(单一场景 + 相机预设)
src/view/ QtWidgets 面板
src/controller/ 联动编排
src/app/ 入口 + 主窗(M1 spike:Qt+VTK 冒烟程序)
tests/ gtest / Qt Test
tools/ 离线验证脚本(validate_samples.py)
docs/ 规约、API、样本数据、设计文档
构建与运行
前置:Visual Studio 2022/2026(勾选「使用 C++ 的桌面开发」工作负载,自带 CMake + Ninja)、Git、vcpkg 并设环境变量 VCPKG_ROOT。构建方案②:单一官方 MSVC 预编译 Qt(CMAKE_PREFIX_PATH → D:/Qt/6.11.1/msvc2022_64)、VTK 预编译于 external/vtk-install、ADS/QtKeychain 经 FetchContent 对接同一份 Qt、仅非 Qt 依赖(GDAL/PROJ/OpenSSL/…)走 vcpkg。详见 docs/ENV_SETUP_Windows.md。
⚠️ 本机
cmake/ninja/cl默认不在 PATH,必须在已激活 MSVC 环境的终端里构建。下面三种方式都已处理好这一点。
方式一:一键脚本(推荐)
项目根的 build.bat 自动用 vswhere 定位 VS、激活 MSVC 环境、按需配置并编译。在 cmd 里于项目根执行 build <命令>:
| 命令 | 作用 |
|---|---|
build(或 build app) |
编译主程序 geopro_desktop(默认) |
build run |
编译并运行主程序 |
build test |
编译并跑单元测试(ctest) |
build all |
编译全部目标 |
build configure |
改了 CMakeLists / 新增源文件后,强制重新配置 |
方式二:Visual Studio 打开文件夹
VS →「打开本地文件夹」→ 选仓库根 → 自动识别 CMakePresets.json → 选配置 MSVC Release → 菜单「生成 → 全部生成」;运行/调试目标选 geopro_desktop。
方式三:手动命令行
开始菜单打开「x64 Native Tools Command Prompt for VS」(已带 MSVC 环境),在仓库根(CMake 用 VS 自带的全路径,因其不在 PATH):
set CMAKE="%VSINSTALLDIR%Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"
%CMAKE% --preset msvc-release :: 配置(首次 / 改 CMakeLists 后)
%CMAKE% --build build/release --target geopro_desktop :: 编译主程序
build\release\src\app\geopro_desktop.exe :: 运行
%CMAKE% --build build/release --target geopro_tests :: 编译测试
ctest --test-dir build/release --output-on-failure :: 跑测试
(Debug 用 --preset msvc-debug,对应 build/debug。%VSINSTALLDIR% 在 Native Tools 提示符里已设好。)
构建目标与产物
geopro_desktop— 主程序,产物build/release/src/app/geopro_desktop.exegeopro_tests— 单元测试,配ctest- 不带
--target编译全部
改了已有
.cpp/.hpp直接--build(Ninja 增量);改了CMakeLists.txt或新增源文件需先--preset/build configure。链接报 LNK1104(文件被占用)时,先关掉运行中的geopro_desktop.exe。
当前状态
M1 设计完成(v2,经双专家评审)。进入 spike 预研(设计 §15):① 全 vcpkg 构建/部署 ② ADS + QVTKOpenGLStereoWidget 停靠稳定 ③ 真实样本跑通 banded contour。spike 通过后展开完整实现计划。