How NetCDF Discrete Sampling Geometry (DSG) tools work

ArcGIS AllSource supports several Discrete Sampling Geometry (DSG) feature types: point, profile, time series, and trajectory. The elements in a DSG feature must be associated with space and time coordinates. The observation variables are geolocated to spatial coordinates with a coordinate attribute.

The input DSG data must follow Climate and Forecast (CF) convention to be used directly. NetCDF files created from earlier versions of the convention or that are missing some necessary attributes can be made useable by supplementing the metadata with an XML file.

The following DSG tools in the NetCDF toolset create feature class output from several types of netCDF files:

The primary outputs of the DSG tools are a feature class and a table. There are several output schemas available, depending on the DSG feature type.

The following sections present how a discrete sampling geometry feature type is represented in a netCDF file using the CF convention. Specific requirements for the types of DSG features that ArcGIS AllSource supports are described, as well as an example of each. You will also learn how the elements in a DSG feature are associated with space and time coordinates, how they are geolocated to the observation variables, and how to use an additional attribute to map the observation variables to spatial coordinates. For netCDF files that are not compliant with the required version of the CF convention, or have missing information, you can use a mechanism supplement or alter the metadata through an external metadata .xml file. Details on the primary output type from the DSG tools and the available schema types are presented. Two of the tools can produce output in different schemas, and those are described in the final section.

Discrete Sampling Geometries

Discrete sampling geometries (DSG) are multidimensional features stored in netCDF format. DSG datasets are characterized by a lower dimensionality compared with the space-time region that is sampled, which are typically paths through space-time such as time series, vertical profiles, and trajectories. For example, see the schematic diagram below showing the vertical profiles of ocean data. The DSG datasets are typically feature collections, in which the word feature represents a single example of a discrete sampling geometry (such as a single trajectory).

Schematic diagram showing the vertical profiles of ocean data
A schematic diagram shows how ocean vertical profiles are collected through sensors cast using ships.

A netCDF file typically contains dimensions, variables, and attributes. A DSG collection is identified by instance variables (which can uniquely identify a DSG instance) and observation variables (storing the observed data). The instance dimension (i) is used to identify a particular feature in a collection of features. Variables that have only the instance dimension are called instance variables, which provide metadata that describe an entire individual feature. The term element (o) is used to distinguish the data elements that compose a single feature. For example, in a collection of time series features, each time series instance, (i), has data value at each time (o).

Learn more about netCDF data

Learn more about Climate and Forecast convention

Learn more about netCDF vocabulary

DSG feature types

There are nine types of DSG features. A CF-complaint DSG file includes only one feature type. The relationships among the spatiotemporal coordinates of the dataset are used to define feature types of DSG. For the profile, time series, and trajectories feature types, within the dataset, the coordinate or auxiliary coordinate variable that contains an attribute cf_role is identified as the object ID variable. This variable must provide a unique identifier for each feature instance, and the dimension of this variable identifies the instance dimension. For point type, cf_role is not required, but both data and coordinates must share the same instance dimension.

In ArcGIS AllSource, the NetCDF Points To Feature Class, NetCDF Profiles To Feature Class, NetCDF Time Series To Feature Class, and NetCDF Trajectories To Feature Class tools can read four types of DSG features—points, profiles, time series, and trajectories—respectively. These tools are available in the NetCDF toolset of the Multidimensional toolbox.

Point

A point is a single data point, which has no implied coordinate relationship to other points. Point data represents scattered locations, such as weather stations. The data and coordinate need to share the same instance dimension, so no element dimension is needed. The logical structure can be represented as below:

  • All variables with same instance dimension: data(I), x(i), y(i), z(i, o), and t(i) All variables with same instance dimension: data(I), x(i), y(i), z(i, o), and t(i)

A DSG points data file can contain single or multiple points features. The number of the points is specified by the instance dimension. Each point can have multiple data variables. To identify the relevant space and time auxiliary coordinate variables, a coordinates attribute will be used for each data variable.

Explore a point in a netCF file

Consider an example of weather stations data. In this example, the humidity(i) and temp(i) data are associated with the coordinate values time(i), lat(i), lon(i), and alt(i), which can be used as Instance Variables in the NetCDF Points To Feature Class tool.


dimensions:
      obs = 1234 ;

   variables:
      double time(obs) ;
          time:standard_name = “time”;
          time:long_name = "time of measurement" ;
          time:units = "days since 1970-01-01 00:00:00" ;
      float lon(obs) ;
          lon:standard_name = "longitude";
          lon:long_name = "longitude of the observation";
          lon:units = "degrees_east";
      float lat(obs) ;
          lat:standard_name = "latitude";
          lat:long_name = "latitude of the observation" ;
          lat:units = "degrees_north" ;
      float alt(obs) ;
          alt:long_name = "vertical distance above the surface" ;
          alt:standard_name = "height" ;
          alt:units = "m";
          alt:positive = "up";
          alt:axis = "Z";

      float humidity(obs) ;
          humidity:standard_name = "specific_humidity" ;
          humidity:coordinates = "time lat lon alt" ;
      float temp(obs) ;
          temp:standard_name = "air_temperature" ;
          temp:units = "Celsius" ;
          temp:coordinates = "time lat lon alt" ;

Profile

A profile is an ordered set of data points along a vertical line at a fixed horizontal position and fixed time. Profile data is a series of connected observations along a vertical line, such as an atmospheric or ocean sounding. The logical structure of profile data contains two parts:

  • Observation variable with both instance and element dimensions—data(i,o)
  • Mandatory coordinate variables—x(i), y(i), z(o), and t(i)

A DSG profile data file can contain single or multiple profile features. The number of profiles is specified by the instance dimension. Profiles can have multiple instance variables. There must be at least one instance variable (of any data type) with the cf_role attribute set to profile_id. The value in this instance variable will be used to create a field in the output feature class. Use the Instance Variables parameter in the NetCDF Profile To Feature Class tool to select and add other instance variables to the output feature class. If a DSG profile data file has multiple observation variables, use the Observation Variables parameter to select and add them to the output table.

Explore a profile in a netCF file

Consider an example of an atmospheric sounding profile. Use the pressure(i,o), temperature(i,o), and humidity(i,o) variables as the observation variables in the tool. They are associated with the mandatory coordinate values time(i), lat(i), lon(i), and z(o) through the instance (profile) or the element (z) dimension. The variable profile is the instance variable with the cf_role attribute set to profile_id. Either the instance (profile) or the element (z) dimension can be the netCDF unlimited dimension.


   dimensions:
      z = 42 ;
      profile = 142 ;

   variables:
      int profile(profile) ;
          profile:cf_role = "profile_id";
      double time(profile);
          time:standard_name = "time";
          time:long_name = "time" ;
          time:units = "days since 1970-01-01 00:00:00" ;
      float lon(profile);
          lon:standard_name = "longitude";
          lon:long_name = "longitude" ;
          lon:units = "degrees_east" ;
      float lat(profile);
          lat:standard_name = "latitude";
          lat:long_name = "latitude" ;
          lat:units = "degrees_north" ;
      float z(z) ;
          z:standard_name = “altitude”;
          z:long_name = "height above mean sea level" ;
          z:units = "km" ;
          z:positive = "up" ;
          z:axis = "Z" ;  
      float pressure(profile, z) ;
          pressure:standard_name = "air_pressure" ;
          pressure:long_name = "pressure level" ;
          pressure:units = "hPa" ;
          pressure:coordinates = "time lon lat z" ;
      float temperature(profile, z) ;
          temperature:standard_name = "surface_temperature" ;
          temperature:long_name = "skin temperature" ;
          temperature:units = "Celsius" ;
          temperature:coordinates = "time lon lat z" ;
      float humidity(profile, z) ;
          humidity:standard_name = "relative_humidity" ;
          humidity:long_name = "relative humidity" ;
          humidity:units = "%" ;
          humidity:coordinates = "time lon lat z" ;

Time series

A time series is a series of data points at the same spatial location with monotonically increasing times. Time series data is taken over periods of time at a set of discrete points or spatial locations. The logical structure of time series data contains two parts:

  • Observation variable with both instance and element dimensions—data(i,o)
  • Mandatory coordinate variables—x(i), y(i), z(i, o), and t(i)

Similar to a DSG profile data, a DSG time series data file can also contain single or multiple time series features. The number of time series is also specified by the instance dimension. There can also be multiple instance variables and observation variables. There must be at least one instance variable (of any data type) with the cf_role attribute set to timeseries_id. Use the Instance Variables parameter in the NetCDF Time Series To Feature Class tool to select and add other instance variables to the output feature class. Use the Observation Variables parameter to select and add additional observation variables to the output table.

Explore a time series in a netCF file

Consider an example of a weather station time series. The humidity(i,o) is the observation variable to use as the Observation Variables parameter value in the tool. It is associated with the mandatory coordinate values time(o), lat(i), lon(i), and alt(i) through the instance (station) or the element (time) dimension. The variable station_name is the instance variable with the cf_role attribute set to timeseries_id. Either the instance (station) or the element (time) dimension can be the netCDF unlimited dimension.


   dimensions:
       station = 10 ;  // measurement locations
       time = UNLIMITED ;

   variables:
     float humidity(station,time) ;
         humidity:standard_name = "specific humidity" ;
         humidity:coordinates = "lat lon alt station_name" ;
         humidity:_FillValue = -999.9f;
     double time(time) ;
         time:standard_name = "time";
         time:long_name = "time of measurement" ;
         time:units = "days since 1970-01-01 00:00:00" ;
     float lon(station) ;
         lon:standard_name = "longitude";
         lon:long_name = "station longitude";
         lon:units = "degrees_east";
     float lat(station) ;
         lat:standard_name = "latitude";
         lat:long_name = "station latitude" ;
         lat:units = "degrees_north" ;
     float alt(station) ;
         alt:long_name = "vertical distance above the surface" ;
         alt:standard_name = "height" ;
         alt:units = "m";
         alt:positive = "up";
         alt:axis = "Z";
     string station_name(station) ;
         station_name:long_name = "station name" ;
         station_name:cf_role = "timeseries_id";

Trajectory

A trajectory is a series of data points along a path through space with monotonically increasing times. Trajectories data is taken along discrete paths through space, each path constituting a connected set of points called a trajectory, for example, along a flight path or a ship path. The logical structure of trajectory files contains two parts:

  • Observation variables—data(i,o)
  • Mandatory coordinate variables—x(i,o), y(i,o), z(i,o), and t(i,o)

Similar to a DSG profile and time series data, a DSG trajectories data file can also contain single or multiple trajectory features. There must be at least one instance variable (of any data type) with the cf_role attribute set to trajectory_id.

Explore a trajectory in a netCF file

Consider an example of a weather balloon trajectory. NO3(i,o) and O3(i,o) are observation variables associated with the mandatory coordinate variables time(i,o), lat(i,o), lon(i,o), and z(i,o) through the instance (trajectory) and the element (obs) dimension. The variable trajectory is the instance variable with the cf_role attribute set to trajectory_id. Either the instance (trajectory) or the element (obs) dimension can be the netCDF unlimited dimension.


   dimensions:
      obs = 1000 ;
      trajectory = 77 ;

   variables:
      string trajectory(trajectory) ;
          trajectory:cf_role = "trajectory_id";
          trajectory:long_name = "trajectory name" ;
      double time(trajectory, obs) ;
          time:standard_name = "time";
          time:long_name = "time" ;
          time:units = "days since 1970-01-01 00:00:00" ;
      float lon(trajectory, obs) ;
          lon:standard_name = "longitude";
          lon:long_name = "longitude" ;
          lon:units = "degrees_east" ;
      float lat(trajectory, obs) ;
          lat:standard_name = "latitude";
          lat:long_name = "latitude" ;
          lat:units = "degrees_north" ;
      float z(trajectory, obs) ;
          z:standard_name = “altitude”;
          z:long_name = "height above mean sea level" ;
          z:units = "km" ;
          z:positive = "up" ;
          z:axis = "Z" ;
      float O3(trajectory, obs) ;
          O3:standard_name = “mass_fraction_of_ozone_in_air”;
          O3:long_name = "ozone concentration" ;
          O3:units = "1e-9" ;
          O3:coordinates = "time lon lat z" ;
      float NO3(trajectory, obs) ;
          NO3:standard_name = “mass_fraction_of_nitrate_radical_in_air”;
          NO3:long_name = "NO3 concentration" ;
          NO3:units = "1e-9" ;
          NO3:coordinates = "time lon lat z" ;

Coordinate reference system

Every feature in a DSG file must associate with an extensible collection of instance variables that uniquely identify the feature and provide other metadata as needed to describe it. Every element of every feature must be associated with its space and time coordinates and with the feature that contains it. The coordinates attribute must be attached to every observation variable to indicate the spatiotemporal coordinate variables that are needed to geolocate the data. The grid_mapping attribute attached to observation variables is also used in many cases to specify spatial coordinate values in DSG files.

To explicitly declare a coordinate reference system (CRS), a grid mapping variable can be defined through single or multiple attributes. The attribute epsg_code in the grid mapping variable can be used to specify a CRS. For example, the World Geodetic System 1984 (WGS84), which is commonly used in the GPS satellite navigation system, can be specified as follows:


int crs ; 
    crs:epsg_code = "EPSG:4326" ;

The grid mapping variable attributes esri_pe_string, crs_wkt, and spatial_ref can all used to define either a Well-known Text 1 (WKT 1) or Well-known Text 2 (WKT 2) string. ArcGIS products typically use WKT 1; however, since the tools support both, either variant can be used for the value of this attribute. More information on the format differences is available in a PDF of the proceedings from the Esri Tech Workshop Coordinate System Standards: A Primer to Understanding the Standards and Their Implementation in the ArcGIS Platform.

When multiple attributes are present in the grid mapping variable, a spatial reference is constructed using the following priority scheme order:

  1. EPSG code
  2. Named projected coordinate system (PCS)
  3. Named geographic coordinate system (GCS) and projection parameters
  4. Spheroid or sphere radius and projection parameters
  5. Horizontal datum and projection parameters
  6. Named GCS and projection parameters
  7. Spheroid or sphere radius and projection parameters
  8. Horizontal datum and projection parameters

When the coordinate system is specified using options 1 and 2, all other grid mapping attributes are ignored. Options 3, 4, and 5 are used to construct a GCS, and options 6, 7, and 8 are used to construct a PCS.

Even though grid mapping can be used to specify both PCS and GCS, the details needed are different between the two. When specifying a GCS, a grid mapping variable is typically used to define the figure of the earth (datum) (WGS84 ellipsoid, sphere, and so on). When specifying a PCS (the horizontal spatial coordinates are easting and northing in a map projection), a grid mapping variable must clearly declare more details of a certain map projection.

The following table shows how a grid_mapping_name is matched to a projection often used by ArcGIS products.

Grid mapping nameEsri projection name (and Esri WKID)

albers_conical_equal_area

43007 Albers

azimuthal_equidistant

43032 Azimuthal_Equidistant

lambert_azimuthal_equal_area

43033 Lambert_Azimuthal_Equal_Area

lambert_conformal_conic

43020 Lambert_Conformal_Conic

lambert_cylindrical_equal_area

43034 Cylindrical_Equal_Area

mercator

43069 Mercator_Variant_A (scale factor and central meridian) Or 43004 Mercator (standard parallel and central meridian)

oblique_mercator

43037 Hotine_Oblique_Mercator_Azimuth_Center

Orthographic

43058 Local

polar_stereographic

43066 Polar_Stereographic_Variant_A (scale_factor_at_projection_origin) Or 43067 Polar_Stereographic_Variant_B (standard parallel)

Sinusoidal

43008 Sinusoidal

transverse_mercator

43006 Transverse_Mercator

Each of the grid mapping names listed in the table above has a unique set of attributes that are used to assign values to the mapping’s parameters. Since a lot of the attributes are shared among several mappings, how they are matched to Esri projection parameters are contained in the following table.

Grid mapping attribute nameProjection parameter name and index

false_easting

0 False_Easting

false_northing

1 False_Northing

longitude_of_central_meridian

2 Central_Meridian

latitude_of_projection_origin

6 Latitude_Of_Origin

longitude_of_projection_origin

2 Central_Meridian

scale_factor_at_projection_origin

5 Scale_Factor

azimuth_of_central_line

7 Azimuth

standard_parallel

3 Standard parallel 1, Latitude of 1st point

4 Standard parallel 2, Latitude of 2nd point

straight_vertical_longitude_from_pole

2 Central_Meridian

scale_factor_at_central_meridian

5 Scale_Factor

In addition to a horizontal coordinate system, you must also specify a vertical coordinate system (VCS), since either 2D or 3D feature classes can be output. Typically, a VCS is a combination of a vertical datum, a linear unit of measure, and the direction (up or down) in which vertical coordinates increase. ArcGIS products use the units and axis direction to render the data correctly in a scene view. A VCS is needed when one of the coordinate variables being converted is vertical and specifies a linear unit (not, for example, a pressure unit).

There are several ways to specify a VCS.

One way is to use a standard name that indicates a standard tidal datum. In this case, no other specification of a vertical datum is required. The tidal datums are descriptive metadata. A dataset with a tidal vertical datum cannot be transformed into another vertical datum. The standard names that select tidal datums are as follows:

  • tidal_sea_surface_height_above_lowest_astronomical_tide
  • tidal_sea_surface_height_above_mean_higher_high_water
  • tidal_sea_surface_height_above_mean_lower_low_water
  • tidal_sea_surface_height_above_mean_low_water_springs
  • tidal_sea_surface_height_above_mean_sea_level

Another way is to use the esri_pe_string, crs_wkt, and spatial_ref attributes with a compound WKT value to specify a VCS.

A third way is to use the geoid_name or geopotential_datum_name attribute in the grid_mapping variable. The current list of supported vertical datum names is available in the Geographic and Vertical Transformations PDF.

Instantaneous_Water_Level_Height (WKID 5829) or Instantaneous_Water_Level_ Depth (WKID 5831) will be used as the default vertical datum if one has not been specified. As with tidal datums, these are descriptive metadata and do not directly support automated conversions to other vertical datums. They are useful for preserving the vertical unit and vertical direction of increasing coordinates.

Note:

The vertical coordinate variable’s standard_name attribute must be compatible with the specified datum. For example, because they contradict, a tool validation error will occur if the standard name height_above_reference_ellipsoid is used in combination with a geoid_name attribute whose value is EGM2008_Geoid.

In some cases, dimensional vertical coordinates are a function of horizontal location as well as parameters that depend on vertical location. These parametric vertical coordinates are currently not supported by the DSG tools. Additional information about these is available in the 4.3.3 Parametric Vertical Coordinate section of the CF convention site.

Supplemental climate and forecast metadata

The CF convention is used to define metadata that provides a definitive description of the data in each variable and their spatial and temporal properties. This convention can help you determine which quantities are comparable from different data sources.

Learn more about netCDF conventions

The name of the convention is presented as a global attribute in a netCDF file. To be read by the DSG tools, the input DSG data must follow CF convention 1.6 or a later version.

Many netCDF files contain DSG instance and observation variables that are based on an earlier CF convention or lack necessary attributes. To use these nonCF-compliant netCDF files as input to ArcGIS AllSource DSG tools, specify an additional metadata XML file for them using the Input Climate and Forecast Metadata parameter. The metadata file must be written using NetCDF Markup Language (NcML).

NetCDF Markup Language

NcML is an XML representation of netCDF metadata that allows you to define or redefine any metadata that is either missing or incorrect in the input netCDF file. You can use an NcML file to modify, delete, and restructure variables.

The Input Climate and Forecast Metadata parameter allows you to use nonCF-complaint netCDF files without having to modify or make any of the input netCDF files CF complaint. You do not need to create an individual NcML for each input noncompliant netCDF file. The same NcML will be applied to all inputs.

Learn more about NcML

The following sections describe how to resolve common scenarios with NcML.

Missing coordinates example

Consider the following observation variable Tmax (daily maximum temperature) in a weather station time series DSG file. It does not have a coordinate attribute attached to it.


float Tmax(stn_num, time) ;
    Tmax:units = "C" ;
    Tmax:long_name = "daily max temperature" ;
    Tmax:_FillValue = 1.e+20f ;

To make the data readable by the DSG tool, add the following text to the Climate and Forecast Metadata XML file:


<variable name="Tmax">    
   <attribute name="coordinates" type="String" value="time lon lat"/>  
</variable>

The above NcML corrections did not list the elev variable, so a 2D feature class will be generated. To get a 3D feature class, add the elev variable.


<variable name="Tmax">    
   <attribute name="coordinates" type="String" value="time lon lat elev"/>  
</variable>

Missing grid mapping example

The following DSG file represents fishery trajectory data. There is no grid mapping variable.


dimensions:
	node = 19483 ;
	time = UNLIMITED ; // (24 currently)
variables:
	float X(node) ;
		X:long_name = "East-West Coordinate" ;
		X:projection = "UTM Zone 10N" ;
		X:units = "meters" ;
	float Y(node) ;
		Y:long_name = "North-South Coordinate" ;
		Y:projection = "UTM Zone 10N" ;
		Y:units = "meters" ;
	float time(time) ;
		time:units = "seconds since 2017-01-01 00:00" ;
		time:long_name = "Time" ;
		time:calendar = "Local" ;
	float salinity(time, siglay, node) ;
		salinity:long_name = "Salinity" ;
		salinity:units = "parts per thousand" ;
		salinity:grid = "fvcom_grid" ;

To define the horizontal coordinate system of the output as UTM Zone 10N (epsg_code:26910), add the following variable:

  
<variable name="crs" type="char">
   <attribute name="epsg_code" type="String" value="EPSG:26910"/>
</variable>

Then modify the observation variable (salinity) to associate with this variable:

  
<variable name="salinity">
   <attribute name="grid_mapping" type="String" value="crs"/>  
</variable>

Improperly defined cf-role example

A DSG file may have a cf_role attribute that is improperly defined. In the following DSG trajectories example, the instance coordinate has the cf_role attribute incorrectly designated as profile_id, when it should be designated as trajectory_id.


int wod_unique_cast(casts) ;
   wod_unique_cast:cf_role = "profile_id" ;

To change a predefined profile DSG file into a trajectory DSG file, add the following variable:

  
<variable name="wod_unique_cast">
   <attribute name="cf_role" type="string" value="trajectory_id"/>
</variable>

DSG tool outputs

All DSG tools will create one primary output feature class and one or two optional outputs. If none of the observation variables or instance variables are selected, only one output feature class will be created. The output feature class will have at least one additional field. One is the InstanceID field, which is a unique identifier for DSG features created by the DSG tools. For the three DSG tools other than NetCDF Points To Feature Class, another additional field is created from the instance variable in the input netCDF file that has the cf_role attribute. The field alias will be the same as the variable name.

To illustrate the nature of the output feature from the DSG tools, examples of the first few records in the output feature class attribute table are shown below. In each case, the tool is identified, and the specific fields mentioned are highlighted. These examples are created using the default settings of each tool (for example, the default output schema for the NetCDF Profile To Feature Class tool is Observation and Instance).

The first example is from the attribute table of an output feature class from the NetCDF Time Series To Feature Class tool using weather station data. The additional fields are InstanceID and stnID, where the stnID field is the name of the instance variable that has the cf_role attribute as timeseries_id.

InstanceID and stnID fields in the output feature class attribute table from the NetCDF Time Series To Feature Class tool

The output feature class attribute table from the NetCDF Profile To Feature Class tool will have another field, Time (UTC), indicating the time the data in each profile instance is created.

Time (UTC) field in the output feature class attribute table from the NetCDF Profiles To Feature Class tool

The output feature class attribute table from the NetCDF Trajectories To Feature Class tool will have two additional fields, From Time (UTC) and To Time (UTC), which indicate the start and end time of each trajectory. These time fields are created from the time coordinate variable from the input netCDF files. As indicated in the field alias, these time fields are in coordinated universal time (UTC) format.

From Time (UTC) and To Time (UTC) fields in the output feature class attribute table from the NetCDF Trajectories To Feature Class tool

For each instance variable specified in the tool, an additional field is added to the output feature class attribute table with the variable name as the field name. The field alias is either the standard or long name, with the variable name following in parentheses. If neither the standard nor the long name is defined, then the field alias is the variable name. The output feature class attribute table from the NetCDF Time Series To Feature Class tool using weather station data has the additional field stnName. It will have Station Name as its alias, which is the long name of the instance variable that is selected.

Selected instance variable stnName added as Station Name field in the output feature class attribute table from the NetCDF Time Series To Feature Class tool

To specify an observation variable, you must specify the name of the output table and, optionally, the name of a feature layer. The optional feature layer output is available for the NetCDF Profile To Feature Class and NetCDF Time Series To Feature Class tools.

The output table will have at least two additional fields. The first is the ObservationID field created by the DSG tool to assign a unique ID for each observation record. The second field is InstanceID, which is the same as feature class output and is used as the foreign key to join the instance feature class to the observation table.

Depending on the tool, the table output will have different additional fields. Coordinate variables associated with the element dimensions become new fields in the output table. Similar to the way of illustrating the nature of the output feature from the DSG tools, examples of the first few records in the output table are shown as well. In each case, the tool is identified, and the specific fields mentioned are highlighted.

A Time (UTC) field created from the time coordinate is added for the NetCDF Time Series To Feature Class tool indicating the time of each data taken in the a time series. The following example is an output table created from this tool using weather station data. The additional fields are ObservationID, InstanceID, Time (UTC), and daily max temperature (the standard name of the selected observation variable Tmax).

An example of the output table from the NetCDF Time Series To Feature Class tool

For the NetCDF Trajectories To Feature Class output table, the Time (UTC), From Time (UTC), and To Time (UTC) fields are added as well as any selected observation variables. The From Time (UTC) and To Time (UTC) fields are the time midpoints between observations.

An example of the output table from the NetCDF Trajectories To Feature Class tool

A Z field is added for the NetCDF Profile To Feature Class tool indicating the depth or height each data is taken in a profile. The selected observation variables will also be added as new fields.

An example of the output table from the NetCDF Profiles To Feature Class tool

If the Output Join Layer parameter is specified, the NetCDF Time Series To Feature Class and NetCDF Profile To Feature Class tools will create an optional feature layer using the name specified in this parameter. The output feature layer will be the output feature class joined to the output table using the InstanceID field as the key. The following is a portion of the attribute table of the output feature layer from the NetCDF Profile To Feature Class tool:

An example of the output feature layer attribute table from the NetCDF Profiles To Feature Class tool

For the NetCDF Points to Feature Class tool, an additional InstanceID field is created in the output feature class table as well as all the selected Instance Variables parameter values.

Specify an appropriate output schema

The DSG tools can produce different types of output schema based on the intended application. The NetCDF Time Series To Feature Class tool only produces one type of schema. The NetCDF Profile To Feature Class and NetCDF Trajectories To Feature Class tools include a parameter you can use to select a schema type.

NetCDF Profiles To Feature Class tool output schema

In the NetCDF Profile To Feature Class tool, you can choose the output schema type using the Output Schema parameter: Instance and Observation, Route and Event, or Point 3D. The Instance and Observation option is the default schema type. The outputs from this parameter are described in the DSG tool outputs section above.

If the Output Schema parameter is set to Route and Event, the tool creates an output feature class and output event table with different structures. No optional output is available. The output feature class will be a 3D vertical polyline, with depth (z-values) as the measure value at vertices. The same fields are added to the output feature class that the Instance and Observation option adds.

The output table will have two new fields, FromZ and ToZ, which can be used for linear events along the profiles. The FromZ and ToZ field values are midpoints between observation z-values, except the first FromZ value and the last ToZ value, which are the same as the z-values. The output table from this schema can also be used with the linear referencing tools to create linear event features.

Learn more about linear referencing

The following image shows a portion of an example output attribute table:

Additional fields FromZ and ToZ in the output table from the NetCDF Profiles To Feature Class tool with Route and Event as output schema

When the Output Schema parameter is set to Point 3D, a 3D point feature class will be created (no table or optional join layer outputs available). The attribute table of the output feature class will have additional fields created from the selected observation variables compared with the Instance and Observation option. Though the attribute table of the output feature class with this schema also has the InstanceID field, the values will not all be unique.

An example of an output feature class attribute table from the NetCDF Profiles To Feature Class tool with Point 3D as the output schema

There are some general guidelines to follow to help determine which schema to use.

The Instance and Observation option often provides the most efficient solution. The output feature class maintains the location of each profile, and the observation data is stored in a separate table. However, even though the observation data in the output table can be joined to the output feature class, the lack of unique object ID in the output feature layer hinders its use in tools that require a unique ID.

If the outputs from this tool need to be used in another tool that requires the values in the ID field to be unique, use the Point 3D option. The resulting output feature class can be larger than the results if the Instance and Observation option is used and may result in longer processing times.

Whenever polyline output is expected, use the Route and Event option. The 3D vertical lines can better illustrate the vertical properties of each profile.

NetCDF Trajectories To Feature Class tool output schema

In the NetCDF Trajectories To Feature Class tool, two output schema types are available using the Output Schema parameter: Route and Event and Point. The Route and Event option is the default schema type. The outputs from this option are described in the DSG tool outputs section above.

If the Output Schema parameter is set to Point, the tool creates a 2D or 3D points feature class that illustrates the locations along each trajectory where observations are made. In the example output feature class attribute table shown below, a Time (UTC) field is created from the time coordinate variable instead of the From Time (UTC) and To Time (UTC) fields that are created using the Route and Event option. Fields created from the selected observation variables will also be included.

Additional fields Time (UTC) and sea_temperature in an output feature class attribute table from the NetCDF Trajectories To Feature Class tool with Point as the output schema

To use the whole path of the trajectory, set the Output Schema parameter to Route and Event. Use this option to use the output with linear referencing tools to create linear event features. If individual points of each location along the track are needed, use the Point option.

References

  • CF Metadata Conventions. Last accessed on 18 April 2022 at https://cfconventions.org/.
  • NetCDF Conventions. Last accessed on 18 April 2022 at https://www.unidata.ucar.edu/software/netcdf/conventions.html.
  • Annotated Schema for NcML. Last accessed on 18 April 2022 at https://docs.unidata.ucar.edu/netcdf-java/current/userguide/annotated_ncml_schema.html.
  • Basic NcML Tutorial. Last accessed on 18 April 2022 at https://docs.unidata.ucar.edu/netcdf-java/current/userguide/basic_ncml_tutorial.html.