[gdal-dev] Motion: adopt RFC 75: Multidimensional array
Even Rouault
even.rouault at spatialys.com
Thu Jul 18 08:48:56 PDT 2019
Hi,
>
> I am in favour of the work on multi-dimensional arrays. There are two open
> PRs https://github.com/rouault/gdal/pulls with changes to the text.
Oh I didn't see them before. I've merged the first one from Edzer. Answering
yours now:
> Though
> I and my employer would like TileDB included in the list of formats (though
> happy to wait until I have added the code to support this)
I'd prefer to limit the scope of the RFC to the drivers I'll take care of.
Other contributors are welcome to implement it for their own drivers of
interest once this has landed into master.
> the issues
> around dimension ordering
https://github.com/rouault/gdal/blob/rfc75/gdal/doc/source/user/
multidim_raster_data_model.rst mentions
"""Most drivers use the row-major convention for dimensions: that is, when
considering that the array elemnts are stored consecutively in memory, the
first dimension is the slowest varying one (in a 2D image, the row), and the
last dimension the fastest varying one (in a 2D image, the colum). That
convention is the default convention used for NumPy arrays, the MEM driver and
the HDF5 and netCDF APIs. The GDAL API is mostly agnostic about that
convention, except when passing a NULL array as the stride parameter for the
:cpp:func:`GDALAbstractMDArray::Read` and
:cpp:func:`GDALAbstractMDArray::Write` methods. You can refer to NumPy
documentation about multidimensional array indeing order issues:
https://docs.scipy.org/doc/numpy/reference/internals.html#multidimensional-array-indexing-order-issues """
Does that answer your concern / question ?
> and defining NULL are two things I would like to
> discuss.
Yes, nodata support is there. Mentionned in
https://github.com/rouault/gdal/blob/rfc75/gdal/doc/source/user/
multidim_raster_data_model.rst#multidimensional-array
and in the C++ API:
https://github.com/rouault/gdal/blob/rfc75/gdal/gcore/gdal_priv.h#L2257
so 2 virtual methods that can be implemented by drivers:
const void* GetRawNoDataValue() const;
bool SetRawNoDataValue(const void* pRawNoData);
and 2 helpers that get/set as double for the common cases.
Even
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the gdal-dev
mailing list