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

Method RdbPointcloud

plugins/rdb/io/RdbPointcloud.cpp:146–348  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144
145
146RdbPointcloud::RdbPointcloud(
147 const std::string& location,
148 const std::string& filter,
149 const bool extras
150):
151 m_context(),
152 m_pointcloud(m_context),
153 m_crs_wkt(),
154 m_crs_epsg(0),
155 m_crs_pose(),
156 m_select_buffer(),
157 m_select_query(),
158 m_select_index(0),
159 m_select_count(0),
160 m_buffer_size(100*1000),
161 m_buffer_px(),
162 m_buffer_py(),
163 m_buffer_pz(),
164 m_buffer_nx(),
165 m_buffer_ny(),
166 m_buffer_nz()
167{
168 using namespace pdal::Dimension;
169 using namespace riegl::rdb::pointcloud;
170
171 // open database
172 OpenSettings settings(m_context);
173 settings.cacheSize = 0; // no cache required, because we only read once
174 m_pointcloud.open(location, settings);
175
176 // query spatial reference system
177 if (m_pointcloud.metaData().exists("riegl.geo_tag"))
178 {
179 NL::json node;
180
181 try
182 {
183 std::string s = m_pointcloud.metaData().get("riegl.geo_tag");
184 node = NL::json::parse(s);
185 if (node["crs"]["epsg"].is_number_integer())
186 m_crs_epsg = node["crs"]["epsg"].get<int>();
187 if (node["crs"]["wkt"].is_string())
188 m_crs_wkt = node["crs"]["wkt"].get<std::string>();
189 if (node["pose"].is_array())
190 {
191 const NL::json pose = node["pose"];
192 if ( (pose.size() == 4) &&
193 (pose[0].size() == 4) &&
194 (pose[1].size() == 4) &&
195 (pose[2].size() == 4) &&
196 (pose[3].size() == 4)
197 )
198 {
199 Eigen::Matrix4d matrix;
200 for (int row = 0; row < 4; ++row)
201 for (int col = 0; col < 4; ++col)
202 {
203 matrix(row, col) = pose[row][col].get<double>();

Callers

nothing calls this directly

Calls 9

strMethod · 0.80
parseFunction · 0.50
nameFunction · 0.50
openMethod · 0.45
existsMethod · 0.45
getMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45
dataTypeMethod · 0.45

Tested by

no test coverage detected