| 64 | } |
| 65 | |
| 66 | std::string writeTrajectoryFile() |
| 67 | { |
| 68 | using DimId = Dimension::Id; |
| 69 | |
| 70 | PointTable table; |
| 71 | PointLayoutPtr layout = table.layout(); |
| 72 | layout->registerDim(DimId::GpsTime); |
| 73 | layout->registerDim(DimId::Roll); |
| 74 | layout->registerDim(DimId::Pitch); |
| 75 | layout->registerDim(DimId::Azimuth); |
| 76 | layout->registerDim(DimId::WanderAngle); |
| 77 | layout->registerDim(DimId::X); |
| 78 | layout->registerDim(DimId::Y); |
| 79 | layout->registerDim(DimId::Z); |
| 80 | |
| 81 | // WGS84 trajectory (EPSG:4979) |
| 82 | // X = longitude in radians, Y = latitude in radians, Z = altitude in meters |
| 83 | // Approximate position: Paris, France (2.3522° E, 48.8566° N, 50m alt) |
| 84 | const double lon_rad = 0.041015; // ~2.35° in radians |
| 85 | const double lat_rad = 0.852478; // ~48.85° in radians |
| 86 | const double alt_m = 50.0; |
| 87 | |
| 88 | PointViewPtr view(new PointView(table)); |
| 89 | view->setField(DimId::GpsTime, 0, 0.0); |
| 90 | view->setField(DimId::Roll, 0, 0.0); |
| 91 | view->setField(DimId::Pitch, 0, 0.0); |
| 92 | view->setField(DimId::Azimuth, 0, 0.0); |
| 93 | view->setField(DimId::WanderAngle, 0, 0.0); |
| 94 | view->setField(DimId::X, 0, lon_rad); |
| 95 | view->setField(DimId::Y, 0, lat_rad); |
| 96 | view->setField(DimId::Z, 0, alt_m); |
| 97 | |
| 98 | view->setField(DimId::GpsTime, 1, 10.0); |
| 99 | view->setField(DimId::Roll, 1, 0.0); |
| 100 | view->setField(DimId::Pitch, 1, 0.0); |
| 101 | view->setField(DimId::Azimuth, 1, 0.0); |
| 102 | view->setField(DimId::WanderAngle, 1, 0.0); |
| 103 | view->setField(DimId::X, 1, lon_rad); |
| 104 | view->setField(DimId::Y, 1, lat_rad); |
| 105 | view->setField(DimId::Z, 1, alt_m); |
| 106 | |
| 107 | BufferReader reader; |
| 108 | reader.addView(view); |
| 109 | |
| 110 | std::string filename = Support::temppath("georeference_trajectory.bpf"); |
| 111 | FileUtils::deleteFile(filename); |
| 112 | |
| 113 | Options writerOpts; |
| 114 | writerOpts.add("filename", filename); |
| 115 | |
| 116 | BpfWriter writer; |
| 117 | writer.setOptions(writerOpts); |
| 118 | writer.setInput(reader); |
| 119 | writer.prepare(table); |
| 120 | writer.execute(table); |
| 121 | return filename; |
| 122 | } |
| 123 |
no test coverage detected