Possibly this is a fool's errand ... I want to be able to cast an RGBA file as a Zarr, so first to cast as multidim I tried the CreateCopy route with NetCDF and I see dimension "x" repeated, with "y" missing. (I'm using an external file as the existing test PNG files are square in shape).
from osgeo import gdal ## PNG source is 100x76 * 4 bands f = "/vsicurl/ https://github.com/cran/png/blob/master/inst/img/Rlogo.png?raw=true" src_ds = gdal.Open(f) ## set NetCDF metadata to make Bands 0,1,2,3 a Z dimension size_z = 4 src_ds.SetMetadataItem('NETCDF_DIM_EXTRA', '{Z}') src_ds.SetMetadataItem('NETCDF_DIM_Z_DEF', f"{{{size_z},4}}") src_ds.SetMetadataItem('NETCDF_DIM_Z_VALUES', '{1.25,2.50}') src_ds.SetMetadataItem('Z#axis', 'Z') # Create netCDF file gdal.GetDriverByName('netCDF').CreateCopy('out.nc', src_ds) ## investigate shape as a mdim ds = gdal.OpenEx("out.nc", gdal.OF_MULTIDIM_RASTER) rootGroup = ds.GetRootGroup() var = rootGroup.OpenMDArray("Band1") ## we ended up with x,x,Z [dim.GetSize() for dim in var.GetDimensions()] #[4, 100, 100] That looks like a bug? And, is there a better way to go about this? PNG->ZARR is my target, I'm fine with programmatic creation of NetCDF, but this could be quite handy as a two-step conversion from pseudo-3D to actual 3D via the cli with "gdal_translate -mo ...". (This is not for real work fwiw, just for me programming at the edges of Zarr, with examples that are clear in visual terms). Cheers, Mike -- 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