Как работают инструменты NetCDF Геометрии дискретной выборки (DSG)

ArcGIS AllSource поддерживает несколько типов объектов Геометрии дискретной выборки (DSG): точка, профиль, временные ряды и траектория. Элементы функции DSG должны быть связаны с пространственными и временными координатами. Переменные наблюдения привязаны к пространственным координатам посредством атрибута координат.

Для непосредственной с ними работы входные данные DSG должны соответствовать Соглашению о метаданных климата и прогноза. Файлы NetCDF, созданные в соответствии с более ранними версиями соглашения или в которых отсутствуют какие-то необходимые атрибуты, можно сделать пригодными для использования, дополнив метаданные файлом XML.

Следующие инструменты DSG в наборе NetCDF создают выходные классы пространственных объектов из нескольких типов файлов netCDF:

Основными выходными данными инструментов DSG являются класс пространственных объектов и таблица. В зависимости от типа объекта DSG доступно несколько схем выходных данных.

В следующих разделах описывается, как тип объектов геометрии дискретной выборки представляется в файле netCDF посредством соглашения CF. Описаны конкретные требования к поддерживаемым ArcGIS AllSource типам объектов функций DSG, а также приведен пример каждого из них. Вы также узнаете, как элементы объекта DSG связаны с пространственными и временными координатами, как они привязаны к переменным наблюдения и как использовать дополнительный атрибут для сопоставления переменных наблюдения с пространственными координатами. Для файлов netCDF, которые не соответствуют требуемой версии соглашения CF или в которых отсутствует какая-либо информация, вы можете использовать механизм дополнения или изменения метаданных через внешний файл .xml метаданных. Содержатся сведения об основном типе выходных данных инструментов DSG и доступных типах схем. Два инструмента могут создавать выходные данные в разных схемах, и они описаны в последнем разделе.

Геометрии дискретной выборки

Геометрии дискретной выборки (DSG) - многомерные объекты, хранящиеся в формате netCDF. Наборы данных DSG характеризуются меньшей размерностью по сравнению с выбранной областью пространства-времени, которая обычно представляет собой пути в пространстве-времени, например, временные ряды, вертикальные профили и траектории. Например, посмотрите на схематическое представление вертикальных профилей океанических данных ниже. Наборы данных DSG обычно представляют собой наборы объектов, в которых слово "объект" означает пример отдельной геометрии выборки (например, одной траектории).

Схематическое представление с вертикальными профилями океанических данных
Схематическое представление показывает, как океанические вертикальные профили получаются сенсорами, установленными на кораблях.

Файл netCDF обычно содержит измерения, переменные и атрибуты. Коллекция DSG идентифицируется переменными экземпляра (которые могут однозначно идентифицировать экземпляр DSG) и переменными наблюдения (хранящими наблюдаемые данные). Измерение экземпляра (i) используется для идентификации конкретного объекта в наборе объектов. Переменные, у которых имеют есть только измерение экземпляра, называются переменными экземпляра, которые содержат метаданные, целиком описывающие отдельный объект. Термин «элемент» (о) используется для обозначения элементов данных, составляющих один объект. Например, в коллекции объектов временных серий у каждого экземпляра временной серии (i) есть значение данных для каждого времени (o).

Более подробно о данных netCDF

Подробнее о конвенции Климата и прогноза

Подробнее о словаре netCDF

Типы объектов DSG

Есть девять типов объектов DSG. Соответствующий CF файл DSG содержит только один тип объектов. Отношения между пространственно-временными координатами набора данных используются для задания типов объектов DSG. Для типов объектов профиль, временные ряды и траектории в наборе данных переменная координаты или вспомогательной координаты, содержащая атрибут cf_role, идентифицируется как переменная идентификатора объекта. Эта переменная должна содержать уникальный идентификатор для каждого экземпляра объекта, а измерение этой переменной определяет измерение экземпляра. Для типа точки 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" ;

Профиль

Профиль — это упорядоченный набор точек данных вдоль вертикальной линии в фиксированном горизонтальном положении и в определенное время. Данные профиля представляют собой ряд связанных наблюдений вдоль вертикальной линии, например, зондирование атмосферы или океана. Логическая структура данных профиля состоит из двух частей:

  • Переменная наблюдения с измерениями элемента и экземпляра - data(i,o)
  • Обязательные переменные координат - x(i), y(i), z(o) и t(i)

Файл данных профиля DSG может содержать один или несколько объектов профилей. Число профилей задается измерением экземпляра. У профилей может быть несколько переменных экземпляра. Необходима как минимум одна переменная экземпляра (любого типа данных) с заданным для атрибута cf_role значением profile_id. Значение этой переменной экземпляра будет использоваться для создания поля в выходном классе пространственных объектов. Используйте параметр Переменные экземпляра в инструменте Профиль NetCDF для класса объектов, чтобы выбрать и добавить другие переменные экземпляра в выходной класс объектов. Если файл данных профиля DSG содержит несколько переменных наблюдения, используйте параметр Переменные наблюдения, чтобы выбрать и добавить их в выходную таблицу.

Изучение профиля в файле netCF

Рассмотрим пример профиля атмосферного зондирования. Используйте переменные давления (i, o), температуры (i, o) и влажности (i, o) в качестве переменных наблюдения в инструменте. Они связаны со значениями обязательных координат time(i), lat(i), lon(i), and z(o) через измерение экземпляра (профиль) или элемента (z). Переменная profile — это переменная экземпляра со значением атрибута cf_role равным profile_id. Либо экземпляр (профиль), либо измерение элемента (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" ;

Временные ряды

Временной ряд — это ряд точек данных в одном и том же пространственном положении с монотонно возрастающим временем. Данные временных рядов берутся за периоды времени в наборе дискретных точек или пространственных местоположений. Логическая структура данных временных рядов состоит из двух частей:

  • Переменная наблюдения с измерениями элемента и экземпляра - data(i,o)
  • Обязательные переменные координат - x(i), y(i), z(o) и t(i)

Так же, как ив случае с данными профилей DSG, файл данных временных рядов может содержать один или несколько объектов временных рядов. Число временных рядов задается измерением экземпляра. Также может быть несколько переменных экземпляра и переменных наблюдения. Необходима как минимум одна переменная экземпляра (любого типа данных) с заданным для атрибута cf_role значением timeseries_id. Используйте параметр Переменные экземпляра в инструменте Временные ряды NetCDF для класса объектов, чтобы выбрать и добавить другие переменные экземпляра в выходной класс объектов. Используйте параметр Переменные наблюдения, чтобы выбрать и добавить дополнительные переменные наблюдения в выходную таблицу.

Изучение временных рядов в файле netCF

Рассмотрим пример временных рядов с метеостанции. Влажность (i,o) — это переменная наблюдения, используемая в инструменте в качестве значения параметра Переменные наблюдения. Она связана со значениями обязательных координат time(i), lat(i), lon(i) и alt(i) через измерение экземпляра (станция) или элемента (время). Переменная station_name — это переменная экземпляра со значением атрибута cf_role, заданным как timeseries_id. Либо экземпляр (станция), либо измерение элемента (время) может быть неограниченным измерением 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";

Траектория

Траектория — это ряд точек данных вдоль пути, идущего через пространство с монотонно возрастающим временем. Данные о траекториях берутся вдоль путей в пространстве, и каждый путь представляет собой связанный набор точек, называемый траекторией - например, это может быть траектория полета или траектория корабля. Логическая структура файлов траекторий состоит из двух частей:

  • Переменные наблюдения - data(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) — переменные наблюдения, связанные с обязательными переменными координат time(i,o), lat(i,o), lon(i,o) и z(i,o) через измерение экземпляра (траектория) и элемента (наблюдение). Переменная trajectory — это переменная экземпляра со значением атрибута cf_role равным trajectory_id. Либо экземпляр (траектория), либо измерение элемента (наблюдение) может быть неограниченным измерением 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. Например, система координат World Geodetic System 1984 (WGS84), которая обычно используется в спутниковой навигационной системе GPS, может быть задана следующим образом:


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, но поскольку инструменты поддерживают оба формата, для значения этого атрибута можно использовать любой вариант. Дополнительную информацию о различиях форматов можно найти в PDF-файле материалов конференции Esri Tech Workshop Стандарты систем координат: введение в понимание стандартов и их внедрение в платформу ArcGIS.

Если в переменной отображения сетки представлены несколько атрибутов, пространственная привязка задается с использованием следующего порядка:

  1. Код EPSG
  2. Именованная система координат проекции (PCS)
  3. Именованная система координат проекции (PCS) и параметры проекции
  4. Радиусы сферы или эллипсоида и параметры проекции
  5. Горизонтальный датум и параметры проекции
  6. Именованная географическая система координат и параметры проекции
  7. Радиусы сферы или эллипсоида и параметры проекции
  8. Горизонтальный датум и параметры проекции

Если система координат задана с помощью опций 1 и 2, все остальные атрибуты отображения сетки игнорируются. Опции 3, 4 и 5 используются для построения географической системы координат, а 6, 7 и 8 — для построения системы координат проекции.

Несмотря на то что отображение сетки может использоваться для задания как системы координат проекции, так и системы географических координат, детали для этих систем различаются. При задании географической системы координат переменная отображения сетки обычно используется для задания фигуры земли - датума (эллипсоид WGS84, сфера и т.д.). При задании системы координат проекции (горизонтальные пространственные координаты - в направлении на восток и на север в картографической проекции) переменная отображения сетки должна четко задавать более подробную информацию об определенной картографической проекции.

В следующей таблице показано соответствие grid_mapping_name проекции в продуктах ArcGIS.

Имя отображения сеткиИмя проекции EsriEsri 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 (коэффициент масштаба и центральный меридиан) или 43004 Mercator (стандартная параллель и центральный меридиан)

oblique_mercator

43037 Hotine_Oblique_Mercator_Azimuth_Center

Orthographic

43058 Local

polar_stereographic

43066 Polar_Stereographic_Variant_A (коэффициент масштаба в центре проекции) или 43067 Polar_Stereographic_Variant_B (стандартная параллель)

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 Азимут

standard_parallel

3 Стандартная параллель 1, Широта 1-ой точки

4 Стандартная параллель 2, Широта 2-ой точки

straight_vertical_longitude_from_pole

2 Central_Meridian

scale_factor_at_central_meridian

5 Scale_Factor

В дополнение к горизонтальной системе координат вы также должны указать вертикальную систему координат (VCS), так как могут быть выведены не только 2D, но и 3D классы пространственных объектов. Обычно ВСК представляет собой комбинацию вертикального датума, линейной единицы измерения и направления (вверх или вниз), в котором увеличиваются вертикальные координаты. Продукты ArcGIS используют единицы измерения и направление оси для правильного отображения данных в виде сцены. ВСК необходима, когда одна из преобразуемых координатных переменных является вертикальной и задает линейную единицу (а не, например, единицу измерения давления).

Есть несколько способов задания ВСК.

Первый способ - использование стандартного имени, соответствующего нулевой приливной глубине. В этом случае никакой другой спецификации вертикального датума не требуется. Нулевая приливная глубина - описательные метаданные. Набор данных, приведенный к нулевой приливной глубине, нельзя преобразовать в другой вертикальный датум. Стандартные имена, выбирающие нулевые приливные глубины:

  • 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

Другой способ - использование атрибутов esri_pe_string, crs_wkt и spatial_ref с составным значением WKT для создания VCS.

Еще один способ - использование атрибутов geoid_name или geopotential_datum_name в переменной grid_mapping. Список поддерживающихся в настоящий момент имен датумов доступен в файле PDF на сайте ArcGIS Developers.

Примечание:

Для загрузки файла PDF необходимо выполнить вход в учетную запись ArcGIS Online.

Если вертикальный датум указан не будет, по умолчанию будет использоваться Instantaneous_Water_Level_Height (WKID 5829) или Instantaneous_Water_Level_ Depth (WKID 5831) Как и в случае с нулевыми приливными глубинами, это описательные метаданные, которые напрямую не поддерживают автоматическое преобразование в другие вертикальные датумы. Они предназначены для сохранения вертикальных единиц и координат по вертикали.

Примечание:

Атрибут standard_name переменной вертикальной координаты должен быть совместим с указанным датумом. Например, поскольку они противоречат друг другу, возникнет ошибка проверки инструмента, если стандартное имя height_above_reference_ellipsoid используется в сочетании с атрибутом geoid_name, значение которого равно EGM2008_Geoid.

В некоторых случаях вертикальные координаты являются функцией горизонтального положения, а также параметрами, которые зависят от вертикального положения. Эти параметрические вертикальные координаты в настоящий момент не поддерживается инструментами DSG. Дополнительная информация об этом доступна в разделе 4.3.3 Параметрическая вертикальная координата на сайте конвенции CF.

Дополнительные метаданные климата и прогноза

Соглашения CF используются для определения метаданных, которые обеспечивают точное описание данных каждой переменной, а также их пространственных и временных свойств. Эта конвенция может позволить вам определить, какие количества сопоставимы из разных источников данных.

Более подробно о соглашениях netCDF

Имя правила наименования представлено в файле netCDF в виде глобального атрибута. Чтобы быть прочитанными инструментами DSG, входные данные DSG должны следовать конвенции 1.6 или более поздней версии.

Многие файлы netCDF содержат переменные экземпляра и переменные наблюдения DSG, которые основаны на более раннем соглашении CF или не имеют необходимых атрибутов. Чтобы использовать эти несовместимые с CF файлы netCDF в качестве входных данных для инструментов DSG ArcGIS AllSource, укажите для них дополнительный XML-файл метаданных в параметре Входные климатические и прогнозные метаданные. Файл метаданных должен быть написан на Языке разметки NetCDF (NcML).

Язык разметки NetCDF

NcML - это XML-представление метаданных netCDF, которое позволяет вам задавать и переопределять любые отсутствующие или неправильные метаданные во входном файле netCDF. Вы можете использовать файл NcML для изменения, удаления и реструктуризации переменных.

Параметр Входные метаданные климата и прогноза позволяет вам использовать не совместимые с CF файлы netCDF без необходимости изменять их или делать входные файлы netCDF CF-совместимыми. Вам не нужно создавать отдельный NcML для каждого входного несовместимого файла netCDF. Тот же NcML будет применен ко всем входным данным.

Подробнее об NcML

В следующих разделах описано, как решать основные сценарии с помощью NcML.

Пример отсутствующих координат

Рассмотрим следующую переменную наблюдения Tmax (максимальная дневная температура) в файле DSG временных рядов метеостанции. К ней не привязан атрибут координат.


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

Файл 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. Для трех инструментов DSG, отличных от Точки NetCDF в класс объектов, создается еще одно дополнительное поле из переменной экземпляра во входном файле netCDF, в котором есть атрибут cf_role. Псевдоним поля будет совпадать с именем переменной.

Чтобы проиллюстрировать характер выходного объекта из инструментов DSG, ниже показаны примеры первых нескольких записей в таблице атрибутов выходного класса объектов. В каждом случае идентифицируется инструмент и выделяются эти поля. Эти примеры создаются с использованием настроек по умолчанию для каждого инструмента (например, выходная схема по умолчанию для инструмента Профиль NetCDF в класс объектов - Наблюдение и экземпляр).

Первый пример взят из таблицы атрибутов выходного класса объектов инструмента Временные ряды NetCDF в класс объектов с использованием данных метеостанции. Дополнительными полями являются InstanceIDи stnID, причем поле stnID является именем переменной экземпляра, имеющей значение атрибута cf_role равное timeseries_id.

Поля InstanceID и stnID в таблице атрибутов выходного класса пространственных объектов инструмента Временные ряды NetCDF в класс объектов

В выходной таблице атрибутов класса объектов инструмента Профиль NetCDF Profile в класс объектов будет еще одно поле, Time (UTC), содержащее время создания данных в каждом экземпляре профиля.

Поле Time (UTC) в таблице атрибутов выходного класса пространственных объектов инструмента Профили NetCDF в класс объектов

Таблица атрибутов выходного класса пространственных объектов инструмента Траектории NetCDF в класс объектов будет содержать два дополнительных поля, From Time (UTC) и To Time (UTC), в которых содержится время начала и время окончания каждой траектории. Эти поля времени создаются из переменной координаты времени входных файлов netCDF. Как видно из псевдонимов полей, это поля времени в формате всемирного координированного времени (UTC).

Поля Время От (UTC) и Время До (UTC) таблицы атрибутов выходного класса объектов инструмента Траектории NetCDF в класс объектов

Для каждой переменной экземпляра, указанной в инструменте, в таблицу атрибутов выходного класса пространственных объектов добавляется дополнительное поле с именем переменной в качестве имени поля. Псевдоним поля — это либо стандартное, либо длинное имя, за которым следует имя переменной в скобках. Если ни стандартное, ни длинное имя не определены, псевдонимом поля является имя переменной. В таблице атрибутов выходного класса объектов из инструмента Временные серии NetCDF в класс объектов с использованием данных метеостанции есть дополнительное поле stnName. Он будет иметь псевдоним Station Name, который представляет собой длинное имя выбранной переменной экземпляра.

Переменная выбранного экземпляра stnName добавляется как поле Station Name в таблице атрибутов выходного класса пространственных объектов инструмента Временные ряды NetCDF в класс объектов

Чтобы задать переменную наблюдения, вы должны указать имя выходной таблицы и, при необходимости, имя векторного слоя. Дополнительные выходные данные векторного слоя доступны для инструментов Профиль NetCDF в класс объектов и Временные серии NetCDF NetCDF в класс объектов.

В выходной таблице будет как минимум два дополнительных поля. Первое — это поле ObservationID, созданное инструментом DSG для присвоения уникального идентификатора записи каждого наблюдения. Второе поле InstanceID совпадает с выходными данными класса объектов и используется в качестве внешнего ключа для присоединения экземпляра класса объектов к таблице наблюдений.

В зависимости от инструмента в выходных данных таблицы будут разные поля. Переменные координат, связанные с размерами элемента, становятся новыми полями выходной таблицы. Подобно иллюстрации характера выходных данных инструментов DSG, также показаны и примеры первых нескольких записей выходной таблицы. В каждом случае идентифицируется инструмент и выделяются эти поля.

Поле Time (UTC), созданное из координаты времени, добавляется для инструмента Временные серии NetCDF в класс объектов, содержит время для каждой даты во временных сериях. Следующий пример представляет собой выходную таблицу, созданную с помощью этого инструмента и данных метеостанции. Дополнительные поля - ObservationID, InstanceID, Time (UTC) и daily max temperature (стандартное имя переменной наблюдения Tmax)

Пример выходной таблицы инструмента Временные серии NetCDF в класс объектов

В выходную таблицу Траектории NetCDF в класс объектов добавляются поля Time (UTC), From Time (UTC) и To Time (UTC), а также любые выбранные переменные наблюдения. Поля From Time (UTC) и To Time (UTC) представляют собой средние точки времени между наблюдениями.

Пример выходной таблицы инструмента Траектории NetCDF в класс объектов

Поле Z добавляется для инструмента Профиль NetCDF в класс объектов с глубиной или высотой всех данных в профиле. Выбранные переменные наблюдения будут также добавлены как новые поля.

Пример выходной таблицы инструмента Профили NetCDF в класс объектов

Если параметр Выходной слой соединения задан, инструменты Временные серии NetCDF в класс объектов и Профиль NetCDF в класс объектов создадут необязательный векторный слой, взяв имя, заданное в этом параметре. Выходным векторным слоем будет выходной класс пространственных объектов, присоединенный к выходной таблице с использованием поля InstanceID в качестве ключа. Ниже показана часть таблицы атрибутов выходного векторного слоя инструмента Профиль NetCDF в класс объектов:

Пример таблицы атрибутов выходного векторного слоя инструмента Профили NetCDF в класс объектов

Для инструмента Точки NetCDF в класс объектов в выходной таблице класса объектов создается дополнительное поле InstanceID, а также все выбранные значения параметра Переменные экземпляра.

Задание подходящей выходной схемы

Инструменты DSG могут создавать различные типы выходных схем - в зависимости от предполагаемого приложения. Инструмент Временные ряды NetCDF в класс объектов создает только один тип схемы. У инструментов Профиль NetCDF в класс объектов и Траектории NetCDF в класс объектов есть параметр, который можно использовать для выбора типа схемы.

Выходная схема инструмента Профили NetCDF в класс объектов

В инструменте Профиль NetCDF в класс объектов вы можете выбрать тип выходной схемы в параметре Выходная схема: Экземпляр и наблюдение, Маршрут и событие или Точка 3D. Экземпляр и наблюдение - тип схемы, используемый по умолчанию. Выходные данные этого параметра описываются в расположенной выше теме описания выходных данных инструмента DSG.

Если для параметра Выходная схема задан тип Маршрут и событие, инструмент создаст выходной класс объектов и выходную таблицу событий разных структур. Дополнительные выходные данные недоступны. Выходным классом объектов будет вертикальная 3D-полилиния с глубинами (значениями z) в качестве значений измерений в вершинах. К выходному классу объектов добавляются те же поля, что и при добавлении параметра Экземпляр и наблюдение.

В выходной таблице будут два новых поля - FromZ и ToZ, которые могут использоваться для линейных событий вдоль маршрутов. Значения полей FromZ и ToZ являются средними точками между z-значениями наблюдений, за исключением первого значения FromZ и последнего значения ToZ, которые совпадают с z-значениями. Выходная таблица из этой схемы также может использоваться инструментами системы линейных координат для создания линейных объектов событий.

Более подробно о системах линейных координат

На следующем изображении показан пример части выходной таблицы атрибутов:

Дополнительные поля FromZ и ToZ выходной таблицы инструмента Профили NetCDF в класс объектов с выходной схемой Маршрут и событие

Если для параметра Выходная схема задано значение Точка 3D, будет создан класс 3D-точечных объектов (таблица и дополнительные выходные данные присоединяемого слоя недоступны). Таблица атрибутов выходного класса пространственных объектов будет иметь дополнительные поля, созданные из выбранных переменных наблюдений, в соотвествии с опцией Экземпляр и наблюдение. Хотя таблица атрибутов выходного класса пространственных объектов с этой схемой также содержит поле InstanceID, не все значения будут уникальными.

Пример таблицы атрибутов выходного класса пространственных объектов инструмента Профили NetCDF в класс объектов с выходной схемой Точка 3D

Существует несколько общих рекомендаций, которым нужно следовать, чтобы определить, какую схему использовать.

Опция Экземпляр и наблюдение часто оказывается самым эффективным решением. Выходной класс пространственных объектов сохраняет местоположение каждого профиля, а данные наблюдений сохраняются в отдельной таблице. Но несмотря на то, что данные наблюдений в выходной таблице могут быть присоединены к выходному классу объектов, отсутствие уникального идентификатора объектов в выходном векторном слое препятствует его использованию в инструментах, которым требуется уникальный идентификатор.

Если выходные данные этого инструмента необходимо использовать в другом инструменте, требующем, чтобы значения в поле ID были уникальными, используйте параметр Точка 3D. Полученный выходной класс объектов может быть больше, чем полученный при применении опции Экземпляр и наблюдение, что может привести к увеличению времени обработки.

Всякий раз, когда на выходе ожидается полилиния, используйте параметр Маршрут и событие. Трехмерные вертикальные линии лучше иллюстрируют вертикальные свойства каждого профиля.

Выходная схема инструмента Траектории NetCDF в класс объектов

В инструменте Траектории NetCDF в класс объектов для параметра Выходная схема доступны два типа выходной схемы: Маршрут и событие и Точка. Маршрут и событие - тип схемы, используемый по умолчанию. Выходные данные этого параметра описываются в расположенной выше теме описания выходных данных инструмента DSG.

Если для параметра Выходная схема задан тип Точка, инструмент создает класс точечных 2D- или 3D-объектов, который показывает местоположения вдоль каждой траектории, по которой производятся наблюдения. В примере таблицы атрибутов выходного класса пространственных объектов, показанном ниже, поле Time (UTC) создается из переменной временной координаты вместо полей From Time (UTC) и To Time (UTC), создаваемых с использованием опции Маршрут и событие. Поля, создаваемые из выбранных переменных наблюдения, будут также включены.

Дополнительные поля Time (UTC) и sea_temperature таблицы атрибутов выходного класса пространственных объектов инструмента Траектории NetCDF в класс объектов с выходной схемой Точка

Чтобы использовать весь путь траектории, установите для параметра Выходная схема значение Маршрут и событие. Воспользуйтесь этой опцией для применения выходных данных инструментами системы линейных координат для создания линейных объектов событий. Если нужны отдельные точки каждого местоположения вдоль трека, используйте опцию Точка.

Справочная информация