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

Method doneFile

io/GDALWriter.cpp:302–374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

300
301
302void GDALWriter::doneFile()
303{
304 if (!m_grid && !m_allowEmpty)
305 throw pdal_error("Unable to write GDAL data with no points "
306 "for output.");
307 else if (!m_grid)
308 return;
309
310 std::array<double, 6> pixelToPos;
311
312 pixelToPos[0] = m_grid->xOrigin();
313 pixelToPos[1] = m_edgeLength;
314 pixelToPos[2] = 0;
315 pixelToPos[3] = m_grid->yOrigin() + (m_edgeLength * m_grid->height());
316 pixelToPos[4] = 0;
317 pixelToPos[5] = -m_edgeLength;
318 gdal::Raster raster(m_outputFilename, m_drivername, m_srs, pixelToPos);
319
320 m_grid->finalize();
321
322 gdal::GDALError err = raster.open(m_grid->width(), m_grid->height(),
323 m_grid->numBands(), m_dataType, m_noData, m_options);
324
325 if (err != gdal::GDALError::None)
326 throwError(raster.errorMsg());
327 int bandNum = 1;
328
329 // Perhaps the grid should return an iterator, which would work as well.
330 double *src;
331 src = m_grid->data("min");
332 double srcNoData = std::numeric_limits<double>::quiet_NaN();
333 if (src && err == gdal::GDALError::None)
334 err = raster.writeBand(src, srcNoData, bandNum++, "min");
335 src = m_grid->data("max");
336 if (src && err == gdal::GDALError::None)
337 err = raster.writeBand(src, srcNoData, bandNum++, "max");
338 src = m_grid->data("mean");
339 if (src && err == gdal::GDALError::None)
340 err = raster.writeBand(src, srcNoData, bandNum++, "mean");
341 src = m_grid->data("idw");
342 if (src && err == gdal::GDALError::None)
343 err = raster.writeBand(src, srcNoData, bandNum++, "idw");
344 src = m_grid->data("count");
345 if (src && err == gdal::GDALError::None)
346 err = raster.writeBand(src, srcNoData, bandNum++, "count");
347 src = m_grid->data("stdev");
348 if (src && err == gdal::GDALError::None)
349 err = raster.writeBand(src, srcNoData, bandNum++, "stdev");
350 for (auto& pct : m_percentiles)
351 {
352 src = m_grid->pctlData(pct);
353 if (src && err == gdal::GDALError::None)
354 err = raster.writeBand(src, srcNoData, bandNum++, "p" + std::to_string(pct));
355 }
356 if (err != gdal::GDALError::None)
357 throwError(raster.errorMsg());
358
359 getMetadata().addList("filename", filename());

Callers

nothing calls this directly

Calls 14

splitFunction · 0.85
numBandsMethod · 0.80
pctlDataMethod · 0.80
addMetadataMethod · 0.80
getMetadataFunction · 0.50
xOriginMethod · 0.45
yOriginMethod · 0.45
heightMethod · 0.45
finalizeMethod · 0.45
openMethod · 0.45
widthMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected