Commit Graph

3 Commits

Author SHA1 Message Date
gaozheng c0b6b31a9a fix(io/gpr): 雷达文件按宽字符打开,支持中文目录路径
规范化/Impulse 雷达 reader 的 std::ifstream 用 toLocal8Bit 产出的窄字节(GBK)路径
打开文件。GUI app 链接 QWebEngine(Chromium)/VTK,启动时 setlocale(LC_ALL,"") 把
LC_CTYPE 提升为系统 UTF-8 locale,此后 narrow ifstream 把 GBK 路径字节当 UTF-8 解析
→ 打不开 → "打开 .head 失败"。纯 "C" locale 的无头/单测环境用 CP_ACP=GBK 解窄路径,
不触发,故此前未暴露。

新增 io/gpr/LocalPath: Windows 用 MultiByteToWideChar(CP_ACP) 把本地 8 位字节解成
宽字符 std::filesystem::path,使 ifstream/ofstream/file_size 走宽字符打开,与 locale
无关;非 Windows 直接 UTF-8。改到所有外部导入路径 open 点(.head/.data/.iprb/.iprh/
.ord/.gps)。

回归测试 OpensCjkDirectoryPathUnderUtf8Locale: 显式置 .UTF-8 locale 复现 app 运行期
条件,走真实 buildLineVolumeFromNormalized 断言中文目录建体成功(退回 narrow 则抛错,
红/绿已验)。
2026-07-01 08:07:40 +08:00
gaozheng 81e18ebd2d feat(gpr): 加 assembleGprSurveySlab 装配道区间 slab
只装配 [t0,t1) 道段的 GprSurvey,各通道用 readIprbRange 只读该段,
内存只随 slab 大小。x0=t0*dx 使 slab 世界 X 与全线对齐(B4 拼接靠此)。
抽公共 assembleFromScans helper 复用校验/标尺/Y 升序置换/值转置,
不改 assembleGprSurvey 公开行为。新增 slab 对拍与越界/通道数测试。
2026-06-23 21:37:56 +08:00
gaozheng c15555dd8a feat(io/gpr): 多通道 .iprb+.ord 装配 GprSurvey
assembleGprSurvey 把一条测线若干通道 .iprb(同名 .iprh)+.ord 装配为
geopro::core::GprSurvey:校验各通道 samples 一致、ntraces 取最小值对齐、
按 .ord 横偏 Y 升序重排通道(values 同步置换)、x0/z0=0、dx=道距、
dz=depthOfSample(1,h);通道数与 .ord 有效通道数不符抛 runtime_error。
索引 64 位。纯 C++17,零 Qt/VTK。
2026-06-23 11:36:56 +08:00