Even, There are some issues with this way.
My draft Julia function looks like bellow (tested with a MxNx7 array) but get this errors julia> GMT.write_multiband(cube, "gd_cube.nc") Warning 1: No 1D variable is indexed by dimension time Warning 6: creation option '-co' is not formatted with the key=value format Warning 6: creation option '-co' is not formatted with the key=value format Warning 6: creation option '-co' is not formatted with the key=value format ERROR 1: netcdf error #-45 : NetCDF: Not a valid data type or _FillValue type mismatch . at (C:\programs\compa_libs\gdal_GIT\gdal\frmts\netcdf\netcdfdataset.cpp,netCDFDataset::CreateCopy,9012) ERROR 1: netcdf error #-49 : NetCDF: Variable not found . at (C:\programs\compa_libs\gdal_GIT\gdal\frmts\netcdf\netcdfdataset.cpp,NCDFPutAttr,10454) Warning 1: No 1D variable is indexed by dimension time And indeed the "time" variable shows up filled with 7 zeros when I open the nc file that is nevertheless created. Also checked with getmetadataitem(ds, "NETCDF_DIM_time_VALUES") that the "1,2,3,4,5,6,7" info was correctly set. I's also strange the warnings about the "-co" options also because they were in fact taken into account. Omitting them creates a classic nc file. function write_multiband(cube, fname::AbstractString, v=nothing; dim_name::String="time") nbands = size(cube,3) ds = gmt2gd(cube) Gdal.setmetadataitem(ds, "NETCDF_DIM_EXTRA", dim_name) Gdal.setmetadataitem(ds, "NETCDF_DIM_" * dim_name * "_DEF", "$(nbands),6") Gdal.setmetadataitem(ds, "NETCDF_DIM_" * dim_name * "_VALUES", "1,2,3,4,5,6,7") Gdal.setmetadataitem(ds, dim_name * "#axis", string(dim_name[1])) crs = Gdal.getproj(cube, wkt=true) (crs != "" ) && Gdal.setproj!(ds, crs) Gdal.unsafe_copy(ds, filename=fname, driver=getdriver("netCDF"), options=["-co", "FORMAT=NC4", "-co", "COMPRESS=DEFLATE", "-co", "ZLEVEL=4"]) end From: Even Rouault <even.roua...@spatialys.com> Sent: Sunday, October 10, 2021 10:48 PM To: Joaquim Manuel Freire Luís <jl...@ualg.pt>; gdal-dev@lists.osgeo.org Subject: Re: [gdal-dev] Writing multi-bands vs multi-datasets Joaquim, https://github.com/OSGeo/gdal/pull/4634 should hopefully help Even Le 10/10/2021 à 22:26, Joaquim Manuel Freire Luís a écrit : Hi, I have a Julia version of gdal_translate (that ends up calling GDALDatasetRasterIOEx) that works in saving a MxNxP array, but not the way I wanted. It creates a multi-subdatasets file, whilst what I wished is to write a multi-band file. For example, the file written with this Julia function looks like below How can I write a multi-band instead of a multi-datasets? I've been looking at the docs of GDALDatasetRasterIOEx but can't see any way of picking one or the other. Joaquim gdalinfo cube_rad.nc Driver: netCDF/Network Common Data Format Files: cube_rad.nc Size is 512, 512 Metadata: NC_GLOBAL#Conventions=CF-1.5 NC_GLOBAL#GDAL=GDAL 3.4.0dev, released 2021/99/99 NC_GLOBAL#history=Sun Oct 10 13:01:06 2021: GDAL CreateCopy( cube_rad.nc, ... ) Subdatasets: SUBDATASET_1_NAME=NETCDF:"cube_rad.nc":Band1 SUBDATASET_1_DESC=[1567x1519] Band1 (32-bit floating-point) SUBDATASET_2_NAME=NETCDF:"cube_rad.nc":Band2 SUBDATASET_2_DESC=[1567x1519] Band2 (32-bit floating-point) ... Saving the same data (or similar) from a Matlab code that I wrote long ago to stack grids, shows gdalinfo evi_cube.nc Driver: netCDF/Network Common Data Format Files: evi_cube.nc Size is 37, 59 Origin = (580140.000000000000000,4418550.000000000000000) Pixel Size = (30.000000000000000,-30.000000000000000) Metadata: ... latitude#actual_range={4416795,4418535} latitude#long_name=latitude latitude#units=degrees_north longitude#actual_range={580155,581235} longitude#long_name=longitude longitude#units=degrees_east NC_GLOBAL#Conventions=COARDS NC_GLOBAL#description=File written from Matlab NC_GLOBAL#node_offset=0 NC_GLOBAL#Source_Software=Mirone NC_GLOBAL#title=Grid created by Mirone NETCDF_DIM_EXTRA={time} NETCDF_DIM_time_DEF={67,6} NETCDF_DIM_time_VALUES={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67} z#actual_range={-856.4703369140625,176.8457641601562} z#long_name=z z#units=unknown z#_FillValue=-nan(ind) Corner Coordinates: Upper Left ( 580140.000, 4418550.000) Lower Left ( 580140.000, 4416780.000) Upper Right ( 581250.000, 4418550.000) Lower Right ( 581250.000, 4416780.000) Center ( 580695.000, 4417665.000) Band 1 Block=37x59 Type=Float32, ColorInterp=Undefined NoData Value=nan Unit Type: unknown Metadata: actual_range={-856.4703369140625,176.8457641601562} long_name=z NETCDF_DIM_time=1 NETCDF_VARNAME=z units=unknown _FillValue=-nan(ind) Band 2 Block=37x59 Type=Float32, ColorInterp=Undefined NoData Value=nan Unit Type: unknown Metadata: actual_range={-856.4703369140625,176.8457641601562} long_name=z NETCDF_DIM_time=2 NETCDF_VARNAME=z units=unknown _FillValue=-nan(ind) ... _______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org<mailto:gdal-dev@lists.osgeo.org> https://lists.osgeo.org/mailman/listinfo/gdal-dev -- http://www.spatialys.com My software is free, but my time generally not.
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/gdal-dev