Commit Graph

2 Commits

Author SHA1 Message Date
gaozheng 4bb846cf07 feat(data): 流式建体 buildGprVolumeStreaming(沿X分slab,内存有界)
沿X按brick对齐分slab逐块建level0体:assembleGprSurveySlab→共享采样核
sampleGprPoint→writeBrick→释放,峰值内存只随单slab,不持整卷。产出与非流式
buildGprVolume+ChunkedVolumeStore::write逐brick+meta完全一致(对拍守护)。

- 真DRY:抽buildGprVolume的逐点采样核(X/Z落格+Y向1D插值+quant.toQ)为共享自由
  函数geopro::core::sampleGprPoint,整卷版与流式版同调,零漂移;原对拍测试守护
  buildGprVolume公开行为不变。
- 依赖方向:StreamingVolumeBuilder置src/data,命名空间geopro::data,编进
  geopro_store(store增链geopro_io_gpr;io_gpr仅依赖core,无环),core保持纯净。
- 全局量化一致:扫全线全部道tile定vmin/vmax(每次只持一道块),scale/offset与
  buildGprVolume同式,逐体素量化一致。
- B3 MEDIUM:StreamingVolumeWriter改持久ofstream成员(构造开/writeBrick复用/
  finalize关),消除每块open/close;同步更新对应回归测试的writer作用域。
2026-06-23 22:18:45 +08:00
gaozheng 5ffc784792 feat(store): ChunkedVolumeStore 增量写 StreamingVolumeWriter
逐块增量写 level0 store,建体不必持有整卷。产出与非流式 write 逐 brick + meta
完全一致:data.bin 逐块 qCompress 追加(块按 finalize 时固定顺序 bz 最慢/bx 最快
索引),meta.json 结构同 write,故 ChunkedVolumeStore/readBrick 可照常读;偏移 64 位。

DRY 复用 write 的压缩/索引/meta 序列化逻辑(compressBrick/brickIndexJson/
writeMetaGeometry)。约定:每块只写一次(重复抛),缺块 finalize 抛,体素数不符抛。

核心测试 test_streaming_write.cpp:流式(乱序写)vs 非流式 write 逐块对拍 + meta
一致;含重复/缺块/尺寸不符三类错误用例。不破坏 write/readBrick/buildPyramid 现有行为。
2026-06-23 21:50:59 +08:00