fix(gpr): 补 Api3dRepository::createGprVolume 声明 + 仓储透传 targetDy

HEAD 的 Api3dRepository.cpp 已定义 createGprVolume,但 .hpp 缺该声明
(成员定义无声明 → geopro_data 编译不过)。本提交补上声明,修复构建。

并把线内通道插值 targetDy(默认 2.5cm) 透传到 createGprVolumeGrid →
app 渲染链也得密 Y 体(与 io::gpr 桥同口径,0=不插值)。
This commit is contained in:
gaozheng 2026-06-26 23:30:04 +08:00
parent cf1c06cde8
commit fadcd12239
3 changed files with 15 additions and 4 deletions

View File

@ -36,12 +36,14 @@ VolumeGrid builtI16ToVolumeGrid(const geopro::core::BuiltI16& built) {
}
VolumeGrid createGprVolumeGrid(const std::string& lineDir,
const std::string& linePrefix, int coarse) {
const std::string& linePrefix, int coarse,
double targetDy) {
// 走 P1/P2 链(io::gpr)得处理后 int16 量化体 → 反量化为 app 的 float 体。
// metricsOut 传 nullptrrepository 只产数据,度量留给 gpr_poc CLI。
// targetDy 透传 → 默认走线内通道插值(2.5cm 网格)app 渲染链即得密 Y 体。
const geopro::core::BuiltI16 built =
geopro::io::gpr::buildLineVolumeFromGpr3dv(lineDir, linePrefix,
/*metricsOut=*/nullptr, coarse);
geopro::io::gpr::buildLineVolumeFromGpr3dv(
lineDir, linePrefix, /*metricsOut=*/nullptr, coarse, targetDy);
return builtI16ToVolumeGrid(built);
}

View File

@ -26,9 +26,12 @@ VolumeGrid builtI16ToVolumeGrid(const geopro::core::BuiltI16& built);
// lineDir/linePrefix 同 gpr3dv-smoke / build-line(如 "D:/Downloads/明星路", "明星路_001")。
// coarse(下采样因子≥1):沿测线(道/X 轴)每 coarse 道取 1省内存横向/深度保全分辨率。
// 稠密 VolumeGrid 全内存,长线需较大 coarse 控内存(默认 4 = build-line POC 档)。
// targetDy(米,>0 启用):线内【通道间插值】目标横向间距(读真实道偏移规则化,不跨线)。
// 默认 0.025(2.5cm)0=不插值(Y=原通道数)。详见 io::gpr::buildLineVolumeFromGpr3dv。
// 失败(加载失败/立方体为空)→ 抛 std::runtime_error(由 io::gpr 链抛出,原样透传)。
VolumeGrid createGprVolumeGrid(const std::string& lineDir,
const std::string& linePrefix, int coarse = 4);
const std::string& linePrefix, int coarse = 4,
double targetDy = 0.025);
} // namespace geopro::data

View File

@ -42,6 +42,12 @@ public:
std::string createVolume(VolumeBuildParams params, const std::string& name);
// 请求体形态创建:组装真实 VoxelGenerateRequest → 派生 params 存储 + 打印请求体 JSON供后端联调
std::string createVolume(const VoxelGenerateRequest& req);
// GPR 三维体:走 io::gpr 逐线管线含线内通道插值§1直接产体并【预填 cachedGrid】
// 注册为 dd_voxel 体 → 自动进 volumeRows/三级树loadVolume 直接命中渲染(不走 mock IDW
// lineDir/linePrefix 同 build-line如 "D:/Downloads/明星路","明星路_010"coarse 控内存。
// 返回新 dsId失败抛 std::runtime_error加载/立方体空,由 io::gpr 链透传)。
std::string createGprVolume(const std::string& lineDir, const std::string& linePrefix,
const std::string& name, int coarse = 8);
// 取回某三维体组装的请求体(测试/联调);非本 repo 创建或无 request 时返回 nullptr。
const VoxelGenerateRequest* lastVoxelRequest(const std::string& dsId) const;
// 已创建三维体的列表行ddCode="dd_voxel"),供三维分析栏合并注入(每次 setDatasets 追加)。