MCPcopy Create free account
hub / github.com/PDAL/PDAL / initialize

Method initialize

io/OptechReader.cpp:85–129  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83
84
85void OptechReader::initialize()
86{
87 std::istream* rawStream = Utils::openFile(m_filename);
88 if (!rawStream)
89 throwError("Unable to open " + m_filename + " for reading.");
90 ILeStream stream(rawStream);
91
92 try
93 {
94 stream.get(m_header.signature, 4);
95 if (strcmp(m_header.signature, "CSD") != 0)
96 throwError("Invalid header signature when reading CSD file: '" +
97 std::string(m_header.signature) + "'");
98
99 stream.get(m_header.vendorId, 64);
100 stream.get(m_header.softwareVersion, 32);
101 stream >> m_header.formatVersion >> m_header.headerSize >>
102 m_header.gpsWeek >> m_header.minTime >> m_header.maxTime >>
103 m_header.numRecords >> m_header.numStrips;
104 for (size_t i = 0; i < 256; ++i)
105 {
106 stream >> m_header.stripPointers[i];
107 }
108 stream >> m_header.misalignmentAngles[0] >>
109 m_header.misalignmentAngles[1] >> m_header.misalignmentAngles[2] >>
110 m_header.imuOffsets[0] >> m_header.imuOffsets[1] >>
111 m_header.imuOffsets[2] >> m_header.temperature >> m_header.pressure;
112 stream.get(m_header.freeSpace, 830);
113 }
114 catch( ... )
115 {
116 Utils::closeFile(rawStream);
117 throw;
118 }
119 Utils::closeFile(rawStream);
120
121 m_boresightMatrix = createOptechRotationMatrix(
122 m_header.misalignmentAngles[0] + m_header.imuOffsets[0],
123 m_header.misalignmentAngles[1] + m_header.imuOffsets[1],
124 m_header.misalignmentAngles[2] + m_header.imuOffsets[2]);
125
126 // The Optech docs say that their lat/longs are referenced
127 // to the WGS84 reference frame.
128 setSpatialReference("EPSG:4326");
129}
130
131
132void OptechReader::addDimensions(PointLayoutPtr layout)

Callers

nothing calls this directly

Calls 5

openFileFunction · 0.50
closeFileFunction · 0.50
setSpatialReferenceFunction · 0.50
getMethod · 0.45

Tested by

no test coverage detected