-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathtest_vr_bag.cpp
More file actions
124 lines (101 loc) · 4.69 KB
/
test_vr_bag.cpp
File metadata and controls
124 lines (101 loc) · 4.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <bag_dataset.h>
#include <bag_vrrefinements.h>
#include <bag_vrrefinementsdescriptor.h>
#include <bag_vrmetadata.h>
#include <bag_vrmetadatadescriptor.h>
#include <catch2/catch_all.hpp>
using BAG::Dataset;
using BAG::VRRefinements;
using BAG::VRRefinementsDescriptor;
using BAG::VRMetadata;
using BAG::VRMetadataDescriptor;
// Test basic reading of an existing VR BAG from https://github.com/OSGeo/gdal/blob/master/autotest/gdrivers/data/bag/test_vr.bag
TEST_CASE("test VR BAG reading GDAL", "[dataset][open][VR][GDAL]")
{
const std::string bagFileName{std::string{std::getenv("BAG_SAMPLES_PATH")} +
"/test_vr.bag"};
const size_t kNumExpectedLayers = 4;
const auto dataset = Dataset::open(bagFileName, BAG_OPEN_READONLY);
REQUIRE(dataset);
CHECK(dataset->getLayerTypes().size() == kNumExpectedLayers);
const uint32_t kExpectedRows = 4;
const uint32_t kExpectedCols = 6;
CHECK(dataset->getDescriptor().getVersion() == "1.6.2");
auto dims = dataset->getDescriptor().getDims();
CHECK(std::get<0>(dims) == kExpectedRows);
CHECK(std::get<1>(dims) == kExpectedCols);
auto vrMeta = dataset->getVRMetadata();
REQUIRE(vrMeta);
const auto vrMetaDesc = vrMeta->getDescriptor();
auto vrMetaDescDims = vrMetaDesc->getDims();
// VR metadata descriptor dims should be the same as BAG dataset dims...
CHECK(std::get<0>(vrMetaDescDims) == kExpectedRows);
CHECK(std::get<1>(vrMetaDescDims) == kExpectedCols);
auto vrRef = dataset->getVRRefinements();
REQUIRE(vrRef);
const auto vrRefDesc = vrRef->getDescriptor();
auto vrRefDescDims = vrRefDesc->getDims();
CHECK(std::get<0>(vrRefDescDims) == 1);
CHECK(std::get<1>(vrRefDescDims) == 556);
}
// Test basic reading of an existing VR BAG from the National Bathymetric Source archive (https://www.nauticalcharts.noaa.gov/learn/nbs.html)
TEST_CASE("test VR BAG reading NBS", "[dataset][open][VR][NBS]")
{
const std::string bagFileName{std::string{std::getenv("BAG_SAMPLES_PATH")} +
"/Sample_VR_BAG-gzip.bag"};
const size_t kNumExpectedLayers = 4;
const auto dataset = Dataset::open(bagFileName, BAG_OPEN_READONLY);
REQUIRE(dataset);
CHECK(dataset->getLayerTypes().size() == kNumExpectedLayers);
const uint32_t kExpectedRows = 4;
const uint32_t kExpectedCols = 4;
CHECK(dataset->getDescriptor().getVersion() == "1.6.0");
auto dims = dataset->getDescriptor().getDims();
CHECK(std::get<0>(dims) == kExpectedRows);
CHECK(std::get<1>(dims) == kExpectedCols);
auto vrMeta = dataset->getVRMetadata();
REQUIRE(vrMeta);
const auto vrMetaDesc = vrMeta->getDescriptor();
auto vrMetaDescDims = vrMetaDesc->getDims();
// VR metadata descriptor dims should be the same as BAG dataset dims...
CHECK(std::get<0>(vrMetaDescDims) == kExpectedRows);
CHECK(std::get<1>(vrMetaDescDims) == kExpectedCols);
auto vrRef = dataset->getVRRefinements();
REQUIRE(vrRef);
const auto vrRefDesc = vrRef->getDescriptor();
auto vrRefDescDims = vrRefDesc->getDims();
CHECK(std::get<0>(vrRefDescDims) == 1);
CHECK(std::get<1>(vrRefDescDims) == 3750);
}
TEST_CASE("test VR BAG reading libbag 1.6.3", "[dataset][open][VR][1.6.3]")
{
const std::string bagFileName{std::string{std::getenv("BAG_SAMPLES_PATH")} +
"/bag_163_vr.bag"};
const size_t kNumExpectedLayers = 4; // Elevation, Uncertainty, varres_metadata, varres_refinements
SECTION("open read only")
{
const auto dataset = Dataset::open(bagFileName, BAG_OPEN_READONLY);
REQUIRE(dataset);
CHECK(dataset->getLayerTypes().size() == kNumExpectedLayers);
const uint32_t kExpectedRows = 529;
const uint32_t kExpectedCols = 579;
CHECK(dataset->getDescriptor().getVersion() == "1.6.3");
auto dims = dataset->getDescriptor().getDims();
CHECK(std::get<0>(dims) == kExpectedRows);
CHECK(std::get<1>(dims) == kExpectedCols);
auto vrMeta = dataset->getVRMetadata();
REQUIRE(vrMeta);
const auto vrMetaDesc = vrMeta->getDescriptor();
auto vrMetaDescDims = vrMetaDesc->getDims();
// VR metadata descriptor dims should be the same as BAG dataset dims...
CHECK(std::get<0>(vrMetaDescDims) == kExpectedRows);
CHECK(std::get<1>(vrMetaDescDims) == kExpectedCols);
// Verify varres_refinements layer dimensions...
auto vrRef = dataset->getVRRefinements();
REQUIRE(vrRef);
const auto vrRefDesc = vrRef->getDescriptor();
auto vrRefDescDims = vrRefDesc->getDims();
CHECK(std::get<0>(vrRefDescDims) == 1);
CHECK(std::get<1>(vrRefDescDims) == 2957372);
}
}