<div dir="ltr"><div>Hello, I have a question about safely re-casting a dataset to another, I want to use Multidim to re-orient an MDArray as a classic 2D raster. I was a bit surprised that this works (I just overwrite poSrcDS with the classic form): </div><div><br></div><div>I'm passing in 'osFilename', 'osArrayName' and two dimension indexes 'index_x' and 'index_y', the first "Open()" line is a literal copy from vrtdataset.cpp: <br><br><br>//
I've removed all the nullptr checks from this code<br>auto poSrcDS = std::unique_ptr<GDALDataset, GDALDatasetUniquePtrReleaser>(<br> GDALDataset::Open(osFilename, GDAL_OF_RASTER | GDAL_OF_VERBOSE_ERROR,<br> aosAllowedDrivers.List(), aosOpenOptions.List(),<br> nullptr));<br>// now open in mdim mode, and get the specified MDArray in Classic form with index_x,index_y<br>auto poMDimDS = std::unique_ptr<GDALDataset>(GDALDataset::Open(osFilename, GDAL_OF_MULTIDIM_RASTER));<br>auto poMdimGroup = poMDimDS->GetRootGroup();<br>auto poArrayDS = poMdimGroup->OpenMDArrayFromFullname(osFilename);<br>auto poClassicDS = poArrayDS->AsClassicDataset(index_x, index_y);<br><br>// FIXME how to safely swap poSrcDS with poClassicDS<br>poSrcDS = std::unique_ptr<GDALDataset, GDALDatasetUniquePtrReleaser>(poClassicDS);</div><div><br></div><div>My question is about the last line where poClassic "replaces" poSrcDS: what am I responsible for to make that safe? </div><div><br></div><div>Thanks!</div><div><br></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Michael Sumner<br>Research Software Engineer<br>Australian Antarctic Division<br>Hobart, Australia<br>e-mail: <a href="mailto:mdsumner@gmail.com" target="_blank">mdsumner@gmail.com</a></div></div></div>