| 299 | } |
| 300 | |
| 301 | TEST(TileDBRoundTripTest, delta_filter_test) |
| 302 | { |
| 303 | // Raw data. |
| 304 | std::string uri = Support::temppath("tiledb_test_intensity_compression"); |
| 305 | std::vector<double> xValues{0.0, 1.0, 2.0, 3.0, 4.0, 5.0}; |
| 306 | std::vector<double> yValues(6, 0.0); |
| 307 | std::vector<double> zValues(6, 0.0); |
| 308 | std::vector<uint16_t> intensityValues{1, 1, 0, 0, 2, 3}; |
| 309 | std::vector<double> gpsTimeValues{1306604063.0, 1306604064.0, 1306604078.0, |
| 310 | 1306604064.0, 1306604064.0, 1306603982.0}; |
| 311 | |
| 312 | // Clean-up previous tests. |
| 313 | if (FileUtils::directoryExists(uri)) |
| 314 | FileUtils::deleteDirectory(uri); |
| 315 | |
| 316 | // Write the original data |
| 317 | { |
| 318 | // Create point table with dimension registry. |
| 319 | PointTable table; |
| 320 | table.layout()->registerDims( |
| 321 | {Dimension::Id::X, Dimension::Id::Y, Dimension::Id::Z, |
| 322 | Dimension::Id::Intensity, Dimension::Id::GpsTime}); |
| 323 | |
| 324 | // Create buffer reader with data. |
| 325 | BufferReader bufferReader; |
| 326 | PointViewPtr view(new PointView(table)); |
| 327 | for (uint32_t index = 0; index < 6; ++index) |
| 328 | { |
| 329 | view->setField(Dimension::Id::X, index, xValues[index]); |
| 330 | view->setField(Dimension::Id::Y, index, yValues[index]); |
| 331 | view->setField(Dimension::Id::Z, index, zValues[index]); |
| 332 | view->setField(Dimension::Id::Intensity, index, |
| 333 | intensityValues[index]); |
| 334 | view->setField(Dimension::Id::GpsTime, index, gpsTimeValues[index]); |
| 335 | } |
| 336 | bufferReader.addView(view); |
| 337 | |
| 338 | // Set TileDB writer options. |
| 339 | Options writerOptions; |
| 340 | writerOptions.add("filename", uri); |
| 341 | writerOptions.add("x_tile_size", 6); |
| 342 | writerOptions.add("y_tile_size", 6); |
| 343 | writerOptions.add("z_tile_size", 6); |
| 344 | NL::json filters({}); |
| 345 | filters["Intensity"] = { |
| 346 | {{"compression", "delta"}}, |
| 347 | {{"compression", "zstd"}, {"compression_level", 5}}}; |
| 348 | filters["GpsTime"] = { |
| 349 | {{"compression", "delta"}, {"reinterpret_datatype", "UINT64"}}, |
| 350 | {{"compression", "bit_width_reduction"}}, |
| 351 | {{"compression", "zstd"}, {"compression_level", 7}}}; |
| 352 | writerOptions.add("filters", filters); |
| 353 | |
| 354 | // Create TileDB writer, set options, and write data. |
| 355 | TileDBWriter writer; |
| 356 | writer.setOptions(writerOptions); |
| 357 | writer.setInput(bufferReader); |
| 358 | writer.prepare(table); |
nothing calls this directly
no test coverage detected