Supported voxel formats

A voxel layer represents volumetric, regularly gridded data. The netCDF format is a self-describing file format for storing array-oriented multidimensional data, specifically designed for scientific variables, such as temperature, humidity, pressure, and soil type. The netCDF format is a widely used open data format. To assure that the data can be read as a voxel layer, it must follow the Climate and Forecast (CF) convention. Currently, only CF-compliant netCDF data with no auxiliary variables as a data source is accepted as a source for a voxel layer.

You can learn more about how to create a netCDF file and visualize the data as a voxel layer in the Learn ArcGIS lesson Visualize ecological marine units with voxels.

Multidimensional data can include many variables in the same file, each variable with its own unique set of dimensions. With netCDF data, you can determine the necessary information about each variable, such as its dimensions, the units of each dimension, and when it was captured.   A netCDF file must be gridded to be visualized as a voxel layer. When adding a voxel layer, the variables that are gridded and belong to the same dimension are shown on the Add Voxel Layer dialog box.

To learn about netCDF data storage, see Fundamentals of netCDF data storage.

To learn netCDF terms, see Essential netCDF vocabulary.

You can use the CF compliance checker to inspect a netCDF file.

You can inspect netCDF files using the Python's netCDF4 library or Unidata's toolsUI program, which presents various aspects of a netCDF file in a comprehensive format.

Required data from netCDF files

Voxel Data Structure to createRequired netCDF Coordinate VariablesRequired Coordinate Variable attributesSample data

X,Y,Z
X,Y,Z

float x

:units

dimensions:
  z = 2;
  y = 33;
  lon = 33;
variables:
  float z(z=2);
 
  float lat(lat=33);
    :units = "degrees_north";
 
  float lon(lon=33);
    :units = "degrees_east"; 
  
  int temp(z=2, lat=33, lon=33);

float y

:units

float z

:units

:positive

X,Y,T
X,Y,T

float x

:units

dimensions:
  time = 2;
  y = 33;
  x = 33;
variables:
  float time(time=2);
     :units = "hours since
1990-01-01T00:00:00";

  float y(y=33);
     :units = "degrees_north";

  float x(x=33);
     :units = "degrees_east";

  int temp(time=2, y=33, x=33);

float y

:units

double time

:units

X,Y.L
X,Y,L

float x

:units

dimensions:
  level = 3;
  y = 33;
  x = 33;
variables:
  float level(level=3);

  float y(y=33);
     :units = "degrees_north";

  float x(x=33);
     :units = "degrees_east";

  int temp(level=3, y=33, x=33);

float y

:units

float level

:units

:positive

X,Y,Z,T
X,Y,Z,T

float x

:units

dimensions:
  time = 2;
  z = 3;
  y = 33;
  x = 33;
variables:
  float time(time=2);
     :units = "hours since
1990-01-01T00:00:00";
  
  float z(z=3);

  float y(y=33);
     :units = "degrees_north";

  float x(x=33);
     :units = "degrees_east";

  int temp(time=2, z=3, y=33, x=33);

float y

:units

float z

:units

:positive

double time

:units

Volumetric

In a netCDF file, variables reference dimensions. Variables that reference dimensions with the same name are coordinate variables. For example, a netCDF file may have the latitude, longitude, time, and level dimensions defined as coordinate variables. Other variables that contain values reference a combination of dimensions. The coordinate system defined in the netCDF file can be geographic or projected. If the coordinate system cannot be read, you can add a .prj file in the same location with the same name as the netCDF file. The .prj file defines the coordinate system.

A variable is treated as a height variable based on a recognized name or positive attribute. Vertical coordinate systems must use a positive attribute, which determines whether the direction of an increasing coordinate value is up or down. Vertical coordinates can also be identified by their units or the value of the axis attribute. If the netCDF variable has a height dimension, it satisfies the volumetric criterion for being visualized as a voxel variable. If any of the coordinate variables cannot be recognized based on the name or units attribute, the Add Multidimensional Voxel Layer dialog box will fail to load any variables and the netCDF file cannot be added as a voxel layer.

Recognized names for coordinate variables

Coordinate variableRecognized names

X

x, projection_x_coordinate, lon, longitude, grid_longitude

Y

y, projection_y_coordinate, lat, latitude, grid_latitude

Z

z, depth, depth_below_geoid, elevation, height, height_above_reference ellipsoid, level, lev

T

time

Variables can be of different types. For example, if the variable includes a decimal, the data is represented as continuous data. If the variable is text or an integer, it is assumed the variable represents discrete data. You can modify the defaults when adding a voxel layer.

Supported time values

The voxel layer currently supports CF compliant time units and time zones. It supports the default calendar as defined in the CF conventions, a Mixed Gregorian/Julian calendar. Time units are read from the netCDF time attributes and are converted to ISO 8601 datetime format.

The voxel layer also supports the climatology time as defined by the CF conventions, for example, when the origin year is listed as 0-1-1. Climatology time represents the 30-year average that is used to define the climate normal by the United Nations convention.

Related topics