Awesome, thanks so much.
Cheers, Mike. On Sun, May 11, 2025 at 8:29 AM Even Rouault <even.roua...@spatialys.com> wrote: > > Le 11/05/2025 à 00:20, Michael Sumner via gdal-dev a écrit : > > 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): > > 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: > > > // I've removed all the nullptr checks from this code > auto poSrcDS = std::unique_ptr<GDALDataset, GDALDatasetUniquePtrReleaser>( > GDALDataset::Open(osFilename, GDAL_OF_RASTER | > GDAL_OF_VERBOSE_ERROR, > aosAllowedDrivers.List(), aosOpenOptions.List(), > nullptr)); > // now open in mdim mode, and get the specified MDArray in Classic form > with index_x,index_y > auto poMDimDS = std::unique_ptr<GDALDataset>(GDALDataset::Open(osFilename, > GDAL_OF_MULTIDIM_RASTER)); > auto poMdimGroup = poMDimDS->GetRootGroup(); > auto poArrayDS = poMdimGroup->OpenMDArrayFromFullname(osFilename); > auto poClassicDS = poArrayDS->AsClassicDataset(index_x, index_y); > > // FIXME how to safely swap poSrcDS with poClassicDS > poSrcDS = std::unique_ptr<GDALDataset, > GDALDatasetUniquePtrReleaser>(poClassicDS); > > My question is about the last line where poClassic "replaces" poSrcDS: > what am I responsible for to make that safe? > > That's perfectly fine. In the mdim API, objects returned by > GetRootGroup(), OpenMDArray(), AsClassicDataset(), etc. , keep the > necessary parent objects alive through shared_ptr mechanism. Furthermore > in your example, there is no relationship between poSrcDS et poClassicDS, > so even if that wasn't the case, your final assignment would be still safe. > > -- http://www.spatialys.com > My software is free, but my time generally not. > > -- Michael Sumner Research Software Engineer Australian Antarctic Division Hobart, Australia e-mail: mdsum...@gmail.com
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/gdal-dev