Multi-dimensional array API

See Multidimensional Raster Data Model and Multidimensional raster API tutorial for examples of working with the Multi-dimensional array API.

Group

class osgeo.gdal.Group(*args, **kwargs)

Proxy of C++ GDALGroupHS class.

CreateAttribute(self, name, dimensions, data_type, options=None) → Attribute

Create an attribute within a MDArray or Group.

See GDALIHasAttribute::CreateAttribute().

Parameters:
  • name (str) -- name

  • dimensions (list) -- List of dimensions, ordered from the slowest varying dimension first to the fastest varying dimension last. Might be empty for a scalar array (if supported by driver)

  • data_type (ExtendedDataType) -- Attribute data type

  • options (dict or list, optional) -- dict or list of driver specific NAME=VALUE option strings.

Returns:

the new Attribute or None on failure.

Return type:

Attribute

Examples

>>> drv = gdal.GetDriverByName('MEM')
>>> mem_ds = drv.CreateMultiDimensional('myds')
>>> rg = mem_ds.GetRootGroup()
>>> dim = rg.CreateDimension('dim', None, None, 2)
>>> ar = rg.CreateMDArray('ar_double', [dim], gdal.ExtendedDataType.Create(gdal.GDT_Float64))
>>> numeric_attr = ar.CreateAttribute('numeric_attr', [], gdal.ExtendedDataType.Create(gdal.GDT_Float64))
>>> string_attr = ar.CreateAttribute('string_attr', [], gdal.ExtendedDataType.CreateString())
CreateDimension(self, name, dim_type, direction, size, options=None) → Dimension

Create a dimension within a Group.

See GDALGroup::CreateDimension().

Parameters:
  • name (str) -- Dimension name

  • dim_type (str) -- Dimension type (might be empty, and ignored by drivers)

  • direction (str) -- Dimension direction (might be empty, and ignored by drivers)

  • size (int) -- Number of values indexed by this dimension. Should be > 0

  • options (dict or list, optional) -- dict or list of driver specific NAME=VALUE option strings.

Returns:

the new Dimension or None on failure.

Return type:

Dimension

Examples

>>> drv = gdal.GetDriverByName('MEM')
>>> mem_ds = drv.CreateMultiDimensional('myds')
>>> rg = mem_ds.GetRootGroup()
>>> dim_band = rg.CreateDimension('band', None, None, 3)
>>> dim_x = rg.CreateDimension('X', None, None, 2)
>>> dim_x.GetFullName()
'/X'
>>> lat = rg.CreateDimension('latitude', gdal.DIM_TYPE_HORIZONTAL_X, None, 2)
>>> lat.GetType()
'HORIZONTAL_X'
CreateGroup(self, name, options=None) → Group
CreateMDArray(self, name, dimensions, data_type, options=None) → MDArray

Create a multidimensional array within a group.

It is recommended that the GDALDimension objects passed in dimensions belong to this group, either by retrieving them with GetDimensions() or creating a new one with CreateDimension().

See GDALGroup::CreateMDArray().

Parameters:
  • name (str) -- name

  • dimensions (list) -- List of dimensions, ordered from the slowest varying dimension first to the fastest varying dimension last. Might be empty for a scalar array (if supported by driver)

  • data_type (ExtendedDataType) -- Array data type

  • options (dict or list, optional) -- dict or list of driver specific NAME=VALUE option strings.

Returns:

the new MDArray or None on failure.

Return type:

MDArray

Examples

>>> drv = gdal.GetDriverByName('MEM')
>>> mem_ds = drv.CreateMultiDimensional('myds')
>>> rg = mem_ds.GetRootGroup()
>>> dimX = rg.CreateDimension('X', None, None, 3)
>>> ar = rg.CreateMDArray('ar', [dimX], gdal.ExtendedDataType.Create(gdal.GDT_Byte))
DeleteAttribute(self, name, options=None) → CPLErr
DeleteGroup(self, name, options=None) → CPLErr
DeleteMDArray(self, name, options=None) → CPLErr
GetAttribute(self, name) → Attribute
GetAttributes(self, options=None)
GetDataType(self, idx) → ExtendedDataType
GetDataTypeCount(self) → size_t
GetDataTypes()

Return data types associated with that group (typically enumerations)

GetDimensions(self, options=None)
GetFullName(self) → char const *
GetGroupNames(options=[]) → list[str]
GetMDArrayFullNamesRecursive(self, groupOptions=None, arrayOptions=None) → char **
GetMDArrayNames(options=[]) → list[str]
GetName(self) → char const *
GetStructuralInfo(self) → char **
GetVectorLayerNames(self, options=None) → char **
OpenGroup(self, name, options=None) → Group
OpenGroupFromFullname(self, name, options=None) → Group
OpenMDArray(self, name, options=None) → MDArray
OpenMDArrayFromFullname(self, name, options=None) → MDArray
OpenVectorLayer(self, name, options=None) → Layer
Rename(self, newName) → CPLErr
ResolveMDArray(self, name, starting_point, options=None) → MDArray
SubsetDimensionFromSelection(self, selection, options=None) → Group

Dimension

class osgeo.gdal.Dimension(*args, **kwargs)

Proxy of C++ GDALDimensionHS class.

GetDirection(self) → char const *
GetFullName(self) → char const *
GetIndexingVariable(self) → MDArray
GetName(self) → char const *
GetSize(self) → GUIntBig
GetType(self) → char const *
Rename(self, newName) → CPLErr
SetIndexingVariable(self, array) → bool

MDArray

class osgeo.gdal.MDArray(*args, **kwargs)

Proxy of C++ GDALMDArrayHS class.

AdviseRead(array_start_idx=None, count=None, options=[])
AsClassicDataset(self, iXDim, iYDim, hRootGroup=None, options=None) → Dataset
BuildOverviews(self, resampling='NEAREST', overviewlist=0, callback=0, callback_data=None, options=None) → CPLErr
Cache(self, options=None) → bool
ComputeStatistics(self, approx_ok=FALSE, callback=0, callback_data=None, options=None) → Statistics
CreateAttribute(self, name, dimensions, data_type, options=None) → Attribute

Create an attribute within a MDArray or Group.

See GDALIHasAttribute::CreateAttribute().

Parameters:
  • name (str) -- name

  • dimensions (list) -- List of dimensions, ordered from the slowest varying dimension first to the fastest varying dimension last. Might be empty for a scalar array (if supported by driver)

  • data_type (ExtendedDataType) -- Attribute data type

  • options (dict or list, optional) -- dict or list of driver specific NAME=VALUE option strings.

Returns:

the new Attribute or None on failure.

Return type:

Attribute

Examples

>>> drv = gdal.GetDriverByName('MEM')
>>> mem_ds = drv.CreateMultiDimensional('myds')
>>> rg = mem_ds.GetRootGroup()
>>> dim = rg.CreateDimension('dim', None, None, 2)
>>> ar = rg.CreateMDArray('ar_double', [dim], gdal.ExtendedDataType.Create(gdal.GDT_Float64))
>>> numeric_attr = ar.CreateAttribute('numeric_attr', [], gdal.ExtendedDataType.Create(gdal.GDT_Float64))
>>> string_attr = ar.CreateAttribute('string_attr', [], gdal.ExtendedDataType.CreateString())
DeleteAttribute(self, name, options=None) → CPLErr
DeleteNoDataValue(self) → CPLErr
GetAttribute(self, name) → Attribute
GetAttributes(self, options=None)
GetBlockSize(self)
GetCoordinateVariables(self)
GetDataType(self) → ExtendedDataType
GetDimensionCount(self) → size_t
GetDimensions(self)
GetFullName(self) → char const *
GetGridded(self, pszGridOptions, xArray=None, yArray=None, options=None) → MDArray
GetMask(self, options=None) → MDArray
static GetMeshGrid(nInputArrays, options=None)
GetName(self) → char const *
GetNoDataValue(MDArray self) → value
GetNoDataValueAsDouble(self)
GetNoDataValueAsInt64(self)
GetNoDataValueAsRaw(self) → CPLErr
GetNoDataValueAsString(self) → retStringAndCPLFree *
GetNoDataValueAsUInt64(self)
GetOffset(self)
GetOffsetStorageType(self) → GDALDataType
GetOverview(self, idx) → MDArray
GetOverviewCount(self) → int
GetProcessingChunkSize(self, nMaxChunkMemory)
GetRawBlockInfo(self, nDims) → RawBlockInfo
GetResampled(self, nDimensions, resample_alg, srs, options=None) → MDArray
GetScale(self)
GetScaleStorageType(self) → GDALDataType
GetShape()

Return the shape of the array

GetSpatialRef(self) → SpatialReference
GetStatistics(self, approx_ok=FALSE, force=TRUE, callback=0, callback_data=None) → Statistics
GetStructuralInfo(self) → char **
GetTotalElementsCount(self) → GUIntBig
GetUnit(self) → char const *
GetUnscaled(self) → MDArray
GetView(self, viewExpr) → MDArray
Read(array_start_idx=None, count=None, array_step=None, buffer_stride=None, buffer_datatype=None)
ReadAsArray(array_start_idx=None, count=None, array_step=None, buffer_datatype=None, buf_obj=None)
ReadAsMaskedArray(array_start_idx=None, count=None, array_step=None)

Return a numpy masked array of ReadAsArray() with GetMask()

Rename(self, newName) → CPLErr
Resize(self, newDimensions, options=None) → CPLErr
SetNoDataValue(MDArray self, value) → CPLErr
SetNoDataValueDouble(self, d) → CPLErr
SetNoDataValueInt64(self, v) → CPLErr
SetNoDataValueRaw(self, nLen) → CPLErr
SetNoDataValueString(self, nodata) → CPLErr
SetNoDataValueUInt64(self, v) → CPLErr
SetOffset(self, val, storageType=GDT_Unknown) → CPLErr
SetScale(self, val, storageType=GDT_Unknown) → CPLErr
SetSpatialRef(self, srs) → OGRErr
SetUnit(self, unit) → CPLErr
Transpose(self, axisMap) → MDArray
Write(buffer, array_start_idx=None, count=None, array_step=None, buffer_stride=None, buffer_datatype=None)
WriteArray(array, array_start_idx=None, array_step=None)
WriteStringArray(self, nDims1, nDims2, nDims3, buffer_datatype, options) → CPLErr
property shape

Returns the shape of the array.

Attribute

class osgeo.gdal.Attribute(*args, **kwargs)

Proxy of C++ GDALAttributeHS class.

GetDataType(self) → ExtendedDataType
GetDimensionCount(self) → size_t
GetDimensionsSize(self)
GetFullName(self) → char const *
GetName(self) → char const *
GetTotalElementsCount(self) → GUIntBig
Read()

Read an attribute and return it with the most appropriate type

ReadAsDouble(self) → double
ReadAsDoubleArray(self)
ReadAsInt(self) → int
ReadAsInt64(self) → long long
ReadAsInt64Array(self)
ReadAsIntArray(self)
ReadAsRaw(self) → CPLErr
ReadAsString(self) → char const *
ReadAsStringArray(self) → char **
Rename(self, newName) → CPLErr
Write(val)
WriteDouble(self, val) → CPLErr
WriteDoubleArray(self, nList) → CPLErr
WriteInt(self, val) → CPLErr
WriteInt64(self, val) → CPLErr
WriteInt64Array(self, nList) → CPLErr
WriteIntArray(self, nList) → CPLErr
WriteRaw(self, nLen) → CPLErr
WriteString(self, val) → CPLErr
WriteStringArray(self, vals) → CPLErr

ExtendedDataType

class osgeo.gdal.ExtendedDataType(*args, **kwargs)

Proxy of C++ GDALExtendedDataTypeHS class.

CanConvertTo(self, other) → bool
static Create(dt) → ExtendedDataType
static CreateCompound(name, nTotalSize, nComps) → ExtendedDataType
static CreateString(nMaxStringLength=0, eSubType=GEDTST_NONE) → ExtendedDataType
Equals(self, other) → bool
GetClass(self) → GDALExtendedDataTypeClass
GetComponents(self)
GetMaxStringLength(self) → size_t
GetName(self) → char const *
GetNumericDataType(self) → GDALDataType
GetRAT(self) → RasterAttributeTable
GetSize(self) → size_t
GetSubType(self) → GDALExtendedDataTypeSubType