ArcGIS AllSource 支持多种离散采样几何 (DSG) 要素类型:点、剖面、时间序列和轨迹。 DSG 要素中的元素必须与空间和时间坐标相关联。 观测变量被地理定位到具有坐标属性的空间坐标。
输入的 DSG 数据必须遵循气候和预报 (CF) 约定才能直接使用。 通过使用 XML 文件补充元数据,可以使用从早期版本的约定创建的或缺少一些必要属性的 NetCDF 文件。
NetCDF 工具集中的以下 DSG 工具可从多种类型的 netCDF 文件创建要素类输出:
DSG 工具的主要输出是要素类和表格。 有几种可用的输出模式,具体取决于 DSG 功能类型。
以下部分介绍如何使用 CF 约定在 netCDF 文件中表示离散采样几何要素类型。 描述了 ArcGIS AllSource 支持的 DSG 要素类型的具体要求以及每个的示例。 您还将了解 DSG 要素中的元素如何与空间和时间坐标相关联,如何将它们定位到观测变量,以及如何使用附加属性将观测变量映射到空间坐标。 对于不符合所需版本的 CF 约定或缺少信息的 netCDF 文件,您可以使用机制补充或通过外部元数据 .xml 文件更改元数据。 提供了有关 DSG 工具的主要输出类型和可用模式类型的详细信息。 其中两个工具可以产生不同模式的输出,这些将在最后一节中描述。
离散采样几何
离散采样几何 (DSG) 是以 netCDF 格式存储的多维要素。 与采样的时空区域相比,DSG 数据集的特征在于维度较低,采样的时空区域通常是穿越时空的路径,例如时间序列、垂直剖面和轨迹。 例如,请参见下面显示海洋数据垂直剖面的示意图。 DSG 数据集通常是要素集合,其中单词要素表示离散采样几何的单个示例(例如单个轨迹)。
NetCDF 文件通常包含维度、变量和属性。 一个 DSG 集合由实例变量(可以唯一标识一个 DSG 实例)和观测变量(存储观测到的数据)来标识。 实例维度 (i) 用于识别要素集合中的特定要素。 只有实例维度的变量称为实例变量,它提供描述整个个别要素的元数据。 术语元素 (o) 用于区分构成单个要素的数据元素。 例如,在时间序列要素的集合中,每个时间序列实例 (i) 在每个时间内 (o) 都有数据值。
DSG 要素类型
DSG 要素有九种类型。 符合 CF 标准的 DSG 文件仅包含一种要素类型。 数据集时空坐标之间的关系用于定义 DSG 的要素类型。 对于剖面、时间序列和轨迹数据类型,在数据集中,包含属性 cf_role 的坐标或辅助坐标变量被标识为对象 ID 变量。 此变量必须为每个要素实例提供唯一标识符,并且此变量的维度标识实例维度。 对于点类型,cf_role 不是必需项,但数据和坐标必须共享相同的实例维度。
在 ArcGIS AllSource 中,NetCDF 点转要素类、NetCDF 剖面转要素类,NetCDF 时间序列转要素类和 NetCDF 轨迹转要素类工具可以分别读取四种类型的 DSG 要素 - 点、剖面、时间序列和轨迹。 这些工具在多维工具箱的 NetCDF 工具集中可用。
点
点是单个数据点,与其他点不存在隐式坐标关系。 点数据表示分散的位置,例如气象站。 数据和坐标需要共享相同的实例维度,因此不需要元素维度。 逻辑结构可以表示如下:
- 具有相同实例维度的所有变量:data(I)、x(i)、y(i)、z(i, o) 和 t(i) 具有相同实例维度的所有变量:data(I)、x(i)、y(i)、z(i, o) 和 t(i)
DSG 点数据文件可以包含单个或多个点要素。 点数量由实例维度指定。 每个点可以包含多个数据变量。 为了识别相关的空间和时间辅助坐标变量,将对每个数据变量使用坐标属性。
探索 netCF 文件中的点
以气象站数据为例。 在此示例中,humidity(i) 和 temp(i) 数据与坐标值 time(i)、lat(i)、lon(i) 和 alt(i) 相关联,可用作 NetCDF 点转要素类工具的实例变量。
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" ;
剖面
剖面是在固定水平位置和固定时间沿垂直线排列的一组数据点。 剖面数据是一系列沿垂直线的相连观测值,例如大气或海洋探测。 剖面数据的逻辑结构包含两部分:
- 具有实例和元素维度的观测变量 - 数据 (i,o)
- 必选坐标变量 - x(i)、y(i)、z(o) 和 t(i)
DSG 剖面数据文件可以包含单个或多个剖面要素。 剖面数量由实例维度指定。 剖面可以具有多个实例变量。 必须至少有一个实例变量(任何数据类型)的 cf_role 属性设置为 profile_id。 此实例变量中的值将用于在输出要素类中创建一个字段。 使用 NetCDF 剖面转要素类工具中的实例变量参数选择其他实例变量并将其添加到输出要素类。 如果 DSG 剖面数据文件具有多个观测变量,请使用观测变量参数选择并将它们添加到输出表中。
探索 netCF 文件中的剖面
以一个大气探测剖面为例。 使用压力 (i,o)、温度 (i,o) 和湿度 (i,o) 变量作为工具中的观测变量。 它们通过实例 (profile) 或元素 (z) 维度与必选坐标值 time(i)、lay(i)、long(i) 和 z(o) 相关联。 变量剖面是 cf_role 属性设置为 profile_id 的实例变量。 实例 (profile) 或元素 (z) 维度都可以是 netCDF 无限维度。
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" ;
时间序列
时间序列是指在同一空间位置处时间单调递增的一系列数据点。 时间序列数据是在一组离散点或空间位置的时间段内获取的。 时序数据的逻辑结构包含两部分:
- 具有实例和元素维度的观测变量 - 数据 (i,o)
- 必选坐标变量 - x(i)、y(i)、z(i, o) 和 t(i)
与 DSG 剖面数据类似,DSG 时间序列数据文件也可以包含单个或多个时间序列要素。 时间序列数量由实例维度指定。 也可以有多个实例变量和观测变量。 必须至少有一个实例变量(任何数据类型)的 cf_role 属性设置为 timeseries_id。 使用 NetCDF 时间序列转要素类工具中的实例变量参数来选择其他实例变量并将其添加到输出要素类。 使用观测变量参数选择其他观测变量并将其添加到输出表。
探索 netCF 文件中的时间序列
以一个气象站时间序列为例。 湿度 (i,o) 是在工具中用作观测变量参数值的观测变量。 通过实例 (station) 或元素 (time) 维度与必选坐标值 time(o)、lat(i)、lon(i) 和 alt(i) 相关联。 变量 station_name 是将 cf_role 属性设置为 timeseries_id 的实例变量。 实例 (station) 或元素 (time) 维度都可以是 netCDF 无限维度。
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";
轨迹
轨迹是沿空间路径的一系列数据点,时间单调递增。 轨迹数据是沿着离散的空间路径获取的,每条路径构成一组连接的点,称为轨迹,例如,沿着飞行路径或航行路径。 轨迹文件的逻辑结构包含两部分:
- 观测值 - 数据 (i,o)
- 必选坐标变量 - x(i,o)、y(i,o)、z(i, o) 和 t(i,o)
与 DSG 剖面和时间序列数据类似,DSG 轨迹数据文件也可以包含单个或多个轨迹要素。 必须至少有一个实例变量(任何数据类型)的 cf_role 属性设置为 trajectory_id。
探索 netCF 文件中的轨迹
以一个气象气球的轨迹为例。 NO3 (i,o) 和 O3 (i,o) 是通过实例 (trajectory) 和元素 (obs) 维度与必选坐标变量 time(i,o)、lat(i,o)、lon(i,o) 和 z(i,o) 相关的观测变量。 变量轨迹是 cf_role 属性设置为 trajectory_id 的实例变量。 实例 (trajectory) 或元素 (obs) 维度都可以是 netCDF 无限维度。
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" ;
坐标参考系统
DSG 文件中的每个要素都必须与实例变量的可扩展集合相关联,可唯一标识这些实例变量的要素并根据需要提供其他元数据描述。 每个要素的每个元素都必须与其空间和时间坐标以及包含它的要素相关联。 该 coordinates 属性必须附加到每个观测变量,以指示对数据进行地理定位所需的时空坐标变量。 在许多情况下,附加到观测变量的 grid_mapping 属性也用于指定 DSG 文件中的空间坐标值。
要显式声明坐标参考系 (CRS),可以通过单个或多个属性定义网格映射变量。 网格映射变量中的 epsg_code 属性可用于指定 CRS。 例如 GPS 卫星导航系统中常用的世界大地测量系统 1984 (WGS84),可以指定如下:
int crs ;
crs:epsg_code = "EPSG:4326" ;
网格映射变量属性 esri_pe_string、crs_wkt 和 spatial_ref 都可用于定义 Well-known Text 1 (WKT 1) 或 Well-known Text 2 (WKT 2) 字符串。 ArcGIS 产品通常使用 WKT 1;但是,由于这些工具都支持这两种方法,因此任何一种都可以用于此属性的值。 有关格式差异的更多信息,请参阅 Esri 技术研讨会的 PDF 文件坐标系标准:标准解读及其在 ArcGIS 平台中的实施入门指南。
当网格映射变量中存在多个属性时,使用以下优先方案顺序构建空间参考:
- EPSG 代码
- 命名投影坐标系 (PCS)
- 命名地理坐标系 (GCS) 和投影参数
- 球体或球体半径和投影参数
- 水平基准面和投影参数
- 命名 GCS 和投影参数
- 球体或球体半径和投影参数
- 水平基准面和投影参数
当使用选项 1 和 2 指定坐标系时,将忽略所有其他网格映射属性。 选项 3、4 和 5 用于构造 GCS,选项 6、7 和 8 用于构造 PCS。
尽管网格映射可用于指定 PCS 和 GCS,但两者所需的细节不同。 指定 GCS 时,通常使用网格映射变量来定义地球图形(基准)(WGS84 椭球体、球体等)。 在指定 PCS 时(水平空间坐标在地图投影中为东和北),网格映射变量必须清楚地声明某个地图投影的更多细节。
下表显示了 grid_mapping_name 如何与 ArcGIS 产品经常使用的投影相匹配。
格网映射名称 | Esri 投影名称(和 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) 或 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) 或 43067 Polar_Stereographic_Variant_B (standard parallel) |
Sinusoidal | 43008 Sinusoidal |
transverse_mercator | 43006 Transverse_Mercator |
上表中列出的每个网格映射名称都有一组独特的属性,用于为映射参数分配值。 由于许多属性在多个映射之间共享,它们与 Esri 投影参数的匹配方式包含在下表中。
格网映射属性名称 | 投影参数名称和索引 |
---|---|
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 |
除了水平坐标系外,您还必须指定垂直坐标系 (VCS),因为可以输出 2D 或 3D 要素类。 通常,VCS 是垂直基准、线性测量单位和垂直坐标增加的方向(向上或向下)的组合。 ArcGIS 产品使用单位和轴方向以在场景视图中正确渲染数据。 当要转换的坐标变量之一是垂直的并指定线性单位(例如,不是压力单位)时,需要 VCS。
可通过多种方式指定 VCS。
一种方法是使用表示标准潮汐基准面的标准名称。 在这种情况下,不需要其他垂直基准面。 潮汐数据是描述性元数据。 具有潮汐垂直基准面的数据集不能转换为另一个垂直基准面。 选择潮汐基准面的标准名称如下:
- 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
另一种方法是使用具有复合 WKT 值的 esri_pe_string、crs_wkt 和 spatial_ref 属性来指定 VCS。
第三种方法是在 grid_mapping 变量中使用 geoid_name 或 geopotential_datum_name 属性。 当前支持的垂直基准面名称列表以 PDF 格式从 ArcGIS Developers 站点提供。
注:
您必须登录 ArcGIS Online 帐户才能下载 PDF 文件。
如果未指定,则 Instantaneous_Water_Level_Height (WKID 5829) 或 Instantaneous_Water_Level_Depth (WKID 5831) 将用作默认垂直基准面。 与潮汐基准面一样,这些是描述性元数据,不直接支持自动转换到其他垂直基准面。 它们对于保留递增坐标的垂直单位和垂直方向很有用。
注:
垂直坐标变量的 standard_name 属性必须与指定的基准面面兼容。 例如,由于它们相互矛盾,如果标准名称 height_above_reference_ellipsoid 与值为 EGM2008_Geoid 的 geoid_name 属性结合使用,则会出现工具验证错误。
在某些情况下,维度垂直坐标是水平位置以及取决于垂直位置参数的函数。 DSG 工具当前不支持这些参数化垂直坐标。 有关这些的更多信息,请参见 CF 约定网站的 4.3.3 参数垂直坐标部分。
补充气候和预报元数据
CF 约定用来定义为每个变量中的数据提供确切描述的元数据及其空间和时态属性。 此约定可以帮助您确定哪些数量可从不同的数据源进行比较。
约定的名称在 netCDF 文件中显示为全局属性。 要被 DSG 工具读取,输入的 DSG 数据必须遵循 CF 约定 1.6 或更高版本。
许多 netCDF 文件包含基于早期 CF 约定或缺少必要属性的 DSG 实例和观测变量。 要将这些不符合 CF 的 netCDF 文件用作 ArcGIS AllSource DSG 工具的输入,请使用输入气候和预报元数据参数为它们指定一个附加的元数据 XML 文件。 元数据文件必须使用 NetCDF 标记语言 (NcML) 编写。
NetCDF 标记语言
NcML 是 netCDF 元数据的 XML 表示,它允许您定义或重新定义输入 netCDF 文件中任何丢失或不正确的元数据。 您可以使用 NcML 文件来修改、删除和重组变量。
输入气候和预报元数据参数允许您使用不符合 CF 的 netCDF 文件,而无需修改文件也无需输入符合 CF 的 netCDF 文件。 无需为每个输入的不兼容 netCDF 文件创建单独的 NcML。 相同的 NcML 将应用于所有输入。
以下部分描述了如何使用 NcML 解决常见场景问题。
缺失坐标示例
考虑气象站时间序列 DSG 文件中的以下观测变量 Tmax(每日最高温度)。 它没有附加坐标属性。
float Tmax(stn_num, time) ;
Tmax:units = "C" ;
Tmax:long_name = "daily max temperature" ;
Tmax:_FillValue = 1.e+20f ;
要使 DSG 工具能够读取数据,请将以下文本添加到气候和预报元数据 XML 文件中:
<variable name="Tmax">
<attribute name="coordinates" type="String" value="time lon lat"/>
</variable>
上面的 NcML 修正中没有列出 elev 变量,所以会生成一个 2D 要素类。 要获取 3D 要素类,请添加 elev 变量。
<variable name="Tmax">
<attribute name="coordinates" type="String" value="time lon lat elev"/>
</variable>
缺失格网映射示例
以下 DSG 文件表示渔业轨迹数据。 未找到格网映射变量。
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" ;
要将输出的水平坐标系定义为 UTM Zone 10N (epsg_code:26910),请添加以下变量:
<variable name="crs" type="char">
<attribute name="epsg_code" type="String" value="EPSG:26910"/>
</variable>
然后修改观测变量(盐度)以与此变量关联:
<variable name="salinity">
<attribute name="grid_mapping" type="String" value="crs"/>
</variable>
定义不正确的 cf-role 示例
DSG 文件可能具有未正确定义的 cf_role 属性。 在以下的 DSG 轨迹示例中,实例坐标的 cf_role 属性被错误地指定为 profile_id,正确应为 trajectory_id。
int wod_unique_cast(casts) ;
wod_unique_cast:cf_role = "profile_id" ;
要将预定义的剖面 DSG 文件更改为轨迹 DSG 文件,请添加以下变量:
<variable name="wod_unique_cast">
<attribute name="cf_role" type="string" value="trajectory_id"/>
</variable>
DSG 工具输出
所有 DSG 工具都将创建一个主要输出要素类和一个或两个可选输出。 如果未选择任何观测变量或实例变量,则只会创建一个输出要素类。 输出要素类将至少有一个附加字段。 一个是 InstanceID 字段,它是由 DSG 工具创建的 DSG 要素的唯一标识符。 对于 NetCDF 点转要素类以外的三个 DSG 工具,另一个附加字段是根据具有 cf_role 属性的输入 netCDF 文件中的实例变量创建的。 字段别名将与变量名称相同。
为了说明 DSG 工具输出要素的性质,输出要素类属性表中的前几条记录示例如下所示。 在每种情况下,都会识别工具,并突出显示提到的特定字段。 这些示例是使用每个工具的默认设置创建的(例如,NetCDF 剖面转要素类工具的默认输出模式是观测值和实例)。
第一个示例来自使用气象站数据的 NetCDF 时间序列转要素类工具的输出要素类的属性表。 附加字段是 InstanceID 和 stnID,其中 stnID 字段是实例变量的名称,该变量的 cf_role 属性为 timeseries_id。
NetCDF 剖面转要素类工具的输出要素类属性表将具有另一个字段 Time (UTC),指示每个剖面实例中的数据的创建时间。
NetCDF 轨迹转要素类工具的输出要素类属性表将具有两个附加字段 From Time (UTC) 和 To Time (UTC),用于指示每个轨迹的开始和结束时间。 这些时间字段根据输入 netCDF 文件中的时间坐标变量创建而来。 如字段别名中所示,这些时间字段采用协调世界时 (UTC) 格式。
对于工具中指定的每个实例变量,都会将一个附加字段添加到输出要素类属性表中,并将变量名称作为字段名称。 字段别名是标准名称或长名称,后跟包含变量名称的括号。 如果既未定义标准名称也未定义长名称,则将使用字段别名作为变量名称。 使用气象站数据的 NetCDF 时间序列转要素类工具的输出要素类属性表具有附加 stnName 字段。 它将 Station Name 作为其别名,这是所选实例变量的长名称。
要指定观测变量,您必须指定输出表的名称,以及(可选)要素图层的名称。 可选要素图层输出可用于 NetCDF 剖面转要素类和 NetCDF 时间序列转要素类工具。
输出表将至少有两个附加字段。 第一个是 DSG 工具创建的 ObservationID 字段,用于为每个观测记录分配唯一 ID。 第二个字段是 InstanceID,与要素类输出相同,用作将实例要素类加入观测表的外键。
根据工具的不同,表格输出将具有不同的附加字段。 与元素维度相关的坐标变量成为输出表中的新字段。 与说明 DSG 工具输出要素性质的方式类似,输出表中前几条记录的示例也将显示出来。 在每种情况下,都会识别工具,并突出显示提到的特定字段。
为 Time (UTC)NetCDF 时间序列转要素类工具添加了一个从时间坐标创建的 字段,用于指示在时间序列中获取的每个数据的时间。 以下示例是使用气象站数据从此工具创建的输出表。 附加字段是 ObservationID、InstanceID、Time (UTC) 和 daily max temperature(所选观测变量 Tmax 的标准名称)。
对于 NetCDF 轨迹转要素类输出表,添加 Time (UTC)、From Time (UTC) 和 To Time (UTC) 字段以及任何选定的观测变量。 From Time (UTC) 和 To Time (UTC) 字段是观测之间的时间中点。
为 NetCDF 剖面转要素类工具添加了一个字段 Z,指示剖面中每个数据的深度或高度。 选定的观测变量也将作为新字段添加。
如果指定了输出连接图层参数,则 NetCDF 时间序列转要素类和 NetCDF 剖面转要素类工具将使用此参数中指定的名称创建可选要素图层。 输出要素图层将是使用 InstanceID 字段作为键连接到输出表的输出要素类。 以下是 NetCDF 剖面转要素类工具的输出要素图层属性表的一部分:
对于 NetCDF 点转要素类工具,在输出要素类表中创建了一个附加 InstanceID 字段以及所有选定的实例变量参数值。
指定适当的输出模式
DSG 工具可以根据预期的应用程序生成不同类型的输出模式。 NetCDF 时间序列转要素类工具仅生成一种模式类型。 NetCDF 剖面转要素类和 NetCDF 轨迹转要素类工具包括一个可用于选择模式类型的参数。
NetCDF 剖面转要素类工具输出模式
在 NetCDF 剖面转要素类工具中,您可以使用输出模式参数选择输出模式类型:实例和观测点、路径和事件或点 3D。 实例和观测点选项是默认模式类型。 此参数的输出在上面的 DSG 工具输出部分中进行了描述。
如果输出计划参数设置为路径和事件,则该工具会创建具有不同结构的输出要素类和输出事件表。 可选输出不可用。 输出要素类将是一条 3D 垂直折线,其中深度(z 值)作为折点处的测量值。 实例和观测点选项添加的相同字段将添加到输出要素类中。
输出表将有两个新字段 FromZ 和 ToZ,可用于沿剖面的线性事件。 FromZ 和 ToZ 字段值是观测 z 值之间的中点,但第一个 FromZ 值和最后一个 ToZ 值除外,它们与 z 值相同。 此模式的输出表也可以与线性参考工具一起使用,以创建线性事件要素。
下图显示了示例输出属性表的一部分:
当输出方案参数设置为点 3D 时,将创建一个 3D 点要素类(没有可用的表或可选连接图层输出)。 与实例和观测点选项相比,输出要素类的属性表将具有从选定观测变量创建的附加字段。 尽管具有此模式的输出要素类的属性表也包含 InstanceID 字段,但值不会都是唯一的。
有一些通用的指导方针可以帮助确定使用哪个模式。
实例和观测点选项通常提供最有效的解决方案。 输出要素类可维护每个剖面的位置,并将观测数据存储在单独的表中。 但是,如果输出要素图层中缺少唯一对象 ID,即使输出表中的观测数据可以连接到输出要素类,也无法在需要唯一 ID 的工具中使用此要素类。
如果需要在另一个要求 ID 字段值唯一的工具中使用此工具的输出,请使用点 3D 选项。 如果使用实例和观测点选项,生成的输出要素类可能会比结果大,并且可能会导致处理时间更长。
每当需要多段线输出时,请使用路径和事件选项。 3D 垂直线可以更好地说明每个剖面的垂直属性。
NetCDF 轨迹转要素类工具输出模式
在 NetCDF 轨迹转要素类工具中,使用输出模式参数可以使用两种输出模式类型:路径和事件以及点。 路径和事件选项是默认模式类型。 此选项的输出在上面的 DSG 工具输出部分中进行了描述。
如果将输出模式参数设置为点,则该工具会创建一个 2D 或 3D 点要素类,以说明沿每个轨迹进行观测的位置。 在下面显示的示例输出要素类属性表中,从时间坐标变量创建的 Time (UTC) 字段,而不是使用路径和事件选项创建的 From Time (UTC) 和 To Time (UTC) 字段。 从选定的观测变量创建的字段也将包括在内。
要使用轨迹的整个路径,请将输出模式参数设置为路径和事件。 使用此选项可将输出与线性参考工具一起使用以创建线性事件要素。 如果需要沿轨道的每个位置的单独点,请使用点选项。
参考资料
- CF Metadata Conventions. 最后于 2022 年 4 月 18 日访问 https://cfconventions.org/。
- NetCDF Conventions. 最后于 2022 年 4 月 18 日访问 https://www.unidata.ucar.edu/software/netcdf/conventions.html。
- Annotated Schema for NcML. 最后于 2022 年 4 月 18 日访问 https://docs.unidata.ucar.edu/netcdf-java/current/userguide/annotated_ncml_schema.html。
- Basic NcML Tutorial. 最后于 2022 年 4 月 18 日访问 https://docs.unidata.ucar.edu/netcdf-java/current/userguide/basic_ncml_tutorial.html。