Abstract base package for dimensional arrays and their specific traits
Author JuliaGeo
7 Stars
Updated Last
1 Year Ago
Started In
October 2019


Abstract base package for dimensional arrays and their specific traits Note this is package currently in the discussion stage.

Requirements on spatial data/domain types from the user's perspective

It is proposed to add behind each point, a possible interface (from the user point of view)

  • Return coordinates lon/lat/depth/time (and arbitrary dimension) for a given index i,j,k,...
coord(A,:latitude,i,j,k) # or better coord(A,Lat(),i,j,k)  
lat(A,i,j,k) # for common dimension names
lat(A,j) # if grids are aligned with longitude/latitude/depth/time...; otherwise an error
  • Return the value at a given index i,j,k... (the result is no longer georeferenced).
  • Tell what each coordinate represent (is the 3rd dimension time or depth or something else?).
coordnames(x) # would return :longitude, :latitude, ... or Lon(), Lat()

Use the CF convention names (longitude, latitude, time, …)

  • Subsetting based on lon/lat/depth/time (and arbitrary dimension) bounding box
  • Irregular grid subsetting returns either: a masked array or a vector of points - need to decide which occurs on getinidex.
A[Lat(x), Lon(y), Time(At(t))]
  • Find the k nearest points for a given location
  • Integral over a raster (knowing the "volume" of each grid cell)
  • Is the cell value for the start, middle or (probably never) the end of the duration/span? Is it an average of the whole period or a specific point in the cell. These specifications should also generalise to any dimension type.
  • Categorical dimensions with no size and optional ordered/unordered status
  • Arrays can be plotted correctly using the grid information

Out-of-scope (at least initially)

  • units and other metadata


  • Zero cost indexing (only works on regular grids?)
  • Lazy affine transformations on the data

Minimal interface to be implemented for different array types of spatial data