feat/3d-radar-volume-ingest #9
|
|
@ -7,7 +7,7 @@ namespace {
|
|||
enum class Dim { D3, D2, Analysis, Other };
|
||||
Dim dimOf(const std::string& c) {
|
||||
if (c == "dd_voxel" || c == "dd_Structual3D" || c == "dd_Property3D" ||
|
||||
c == "dd_section" || c == "dd_inversion_data")
|
||||
c == "dd_section" || c == "dd_inversion_data" || c == "dd_radar_3d")
|
||||
return Dim::D3;
|
||||
if (c == "dd_slice") return Dim::Analysis;
|
||||
if (c == "dd_trajectory_data") return Dim::D2;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ DsDimension Api3dRepository::dimensionOf(const DsRow& ds) const {
|
|||
// TODO(P3): 与 LocalSample3dRepository 重复,宜提取共享映射(后续清理)。
|
||||
const std::string& c = ds.ddCode;
|
||||
if (c == "dd_voxel" || c == "dd_Structual3D" || c == "dd_Property3D" || c == "dd_section" ||
|
||||
c == "dd_inversion_data") {
|
||||
c == "dd_inversion_data" || c == "dd_radar_3d") {
|
||||
return DsDimension::Dim3D;
|
||||
}
|
||||
if (c == "dd_slice") return DsDimension::Analysis3D;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ DsDimension LocalSample3dRepository::dimensionOf(const DsRow& ds) const {
|
|||
const std::string& c = ds.ddCode;
|
||||
// 真三维体 / 体素 / 帘面(dd_section/反演剖面摆成竖直帘面)入三维数据集。
|
||||
if (c == "dd_voxel" || c == "dd_Structual3D" || c == "dd_Property3D" || c == "dd_section" ||
|
||||
c == "dd_inversion_data") {
|
||||
c == "dd_inversion_data" || c == "dd_radar_3d") {
|
||||
return DsDimension::Dim3D;
|
||||
}
|
||||
// 切片:三维分析栏。
|
||||
|
|
|
|||
|
|
@ -14,14 +14,16 @@ TEST(DatasetDimension, SplitsByDdCode) {
|
|||
std::vector<DsRow> in{
|
||||
row("a", "dd_section"), // 3D
|
||||
row("b", "dd_voxel"), // 3D
|
||||
row("f", "dd_radar_3d"), // 3D(三维雷达体,spec §6.1)
|
||||
row("c", "dd_trajectory_data"), // 2D
|
||||
row("d", "dd_slice"), // Analysis
|
||||
row("e", "dd_unknownxyz"), // Other -> not in any bucket
|
||||
};
|
||||
DimBuckets b = splitByDimension(in);
|
||||
ASSERT_EQ(b.dim3D.size(), 2u);
|
||||
ASSERT_EQ(b.dim3D.size(), 3u);
|
||||
EXPECT_EQ(b.dim3D[0].id, "a");
|
||||
EXPECT_EQ(b.dim3D[1].id, "b");
|
||||
EXPECT_EQ(b.dim3D[2].id, "f");
|
||||
ASSERT_EQ(b.dim2D.size(), 1u);
|
||||
EXPECT_EQ(b.dim2D[0].id, "c");
|
||||
ASSERT_EQ(b.analysis.size(), 1u);
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@ TEST(LocalSample3dRepo, DimensionOfMapsDdCode) {
|
|||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_Property3D")), DsDimension::Dim3D);
|
||||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_section")), DsDimension::Dim3D);
|
||||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_inversion_data")), DsDimension::Dim3D);
|
||||
// 三维雷达体(数据字典 DD0623 dd_radar_3d)→ 三维数据集(spec §6.1)。
|
||||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_radar_3d")), DsDimension::Dim3D);
|
||||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_slice")), DsDimension::Analysis3D);
|
||||
// 足迹型 → 二维:数据字典 DD0623 只 dd_trajectory_data 为统一通用轨迹「保留」;
|
||||
// 瞬变电磁/雷达通道/RTK 等轨迹型字典均「删除」→ 不再归 2D(落 Other)。
|
||||
|
|
@ -155,6 +157,17 @@ TEST(Api3dRepo, LoadMapLineNullHandleCallsOnError) {
|
|||
EXPECT_TRUE(errCalled);
|
||||
}
|
||||
|
||||
// dimensionOf(Api,与 LocalSample3dRepository 同口径):三维雷达体 dd_radar_3d → 三维(spec §6.1)。
|
||||
TEST(Api3dRepo, DimensionOfMapsDdRadar3dToDim3D) {
|
||||
StubAsyncRepo dsRepo;
|
||||
auto frame = std::make_shared<geopro::core::GeoLocalFrame>(22.0, 114.0);
|
||||
Api3dRepository repo(dsRepo, frame);
|
||||
|
||||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_radar_3d")), DsDimension::Dim3D);
|
||||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_voxel")), DsDimension::Dim3D);
|
||||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_unknown_xyz")), DsDimension::Other);
|
||||
}
|
||||
|
||||
// volumeInfo:未知 dsId(非三维体)→ 返回 false,不弹空对话框。
|
||||
TEST(Api3dRepo, VolumeInfoUnknownIdReturnsFalse) {
|
||||
StubAsyncRepo dsRepo;
|
||||
|
|
|
|||
Loading…
Reference in New Issue