NetCDF の不連続なサンプリング ジオメトリ (DSG) ツールの仕組み

ArcGIS Pro は、ポイント、プロファイル、時系列、軌道といった複数の不連続なサンプリング ジオメトリ (DSG) のフィーチャ タイプをサポートしています。 DSG フィーチャの要素は、空間と時間の座標と関連付ける必要があります。 観測変数は、任意の座標属性を持つ空間座標にジオロケーションされています。

入力 DSG データを直接使用するには、Climate and Forecast (CF) 規約に従う必要があります。 古いバージョンの CF 規約から作成された NetCDF ファイルまたは必要な属性をいくつか欠いている NetCDF ファイルは、XML ファイルを使用してメタデータを補足することにより、使用できるようになります。

NetCDF ツールセット内の以下の DSG ツールを使用すると、複数種類の NetCDF ファイルからフィーチャクラス出力を作成できます。

DSG ツールの一次出力は、フィーチャクラスとテーブルです。 DSG フィーチャ タイプに応じて、複数の出力スキーマを使用できます。

以降のセクションでは、不連続なサンプリング ジオメトリのフィーチャ タイプが CF 規約を使用して NetCDF ファイルでどのように表されるかを説明します。 ArcGIS Pro がサポートしている DSG フィーチャのタイプに固有の要件を説明し、それぞれの例を示します。 DSG フィーチャの要素が空間座標と時間座標にどのように関連付けられているか、これらの要素が観測変数にどのようにジオロケーションされているか、観測変数を空間座標に対応付けるための追加属性の使用方法についても説明します。 規定バージョンの CF 規約に準拠していない NetCDF ファイルまたは情報が欠けている NetCDF ファイルについては、外部メタデータの .xml ファイルを使用してメタデータを補足または変更する機能を使用できます。 DSG ツールからの一次出力タイプと使用可能なスキーマ タイプに関する詳細を提示します。 これらのツールのうち 2 つは、異なるスキーマで出力を生成できます。これについては、最終セクションで説明します。

不連続なサンプリング ジオメトリ

不連続なサンプリング ジオメトリ (DSG) は、NetCDF 形式で保存されている多次元フィーチャです。 DSG データセットは、サンプリングされる時空間リージョンよりも低い次元により分類されており、通常は、時系列、垂直プロファイル、軌道など、時空間を経由するパスです。 たとえば、海洋データの垂直プロファイルを示す下の図をご覧ください。 DSG データセットは、通常はフィーチャの集合であり、この中で、単語フィーチャが不連続なサンプリング ジオメトリ (単一軌道など) の単一の例を表しています。

海洋データの垂直プロファイルを示す図
図は、海洋のプロファイルが船舶を使用して投入されたセンサーによりどのように収集されているかを示しています。

NetCDF ファイルには通常、ディメンション、変数、属性が含まれています。 DSG の集合は、インスタンス変数 (DSG インスタンスを一意に特定できるもの) と観測変数 (観測されたデータを保存するもの) により識別されます。 インスタンス ディメンション (i) は、フィーチャの集合内の特定フィーチャを識別するために使用されます。 インスタンス ディメンションのみを持つ変数はインスタンス変数と呼ばれ、個々のフィーチャ全体を説明するメタデータを提供します。 用語エレメント (o) は、単一フィーチャを構成するデータ エレメントを区別するために使用されます。 たとえば、時系列フィーチャの集合では、各時系列インスタンス (i) は、各時間 (o) においてデータ値を持っています。

netCDF データの詳細

Climate and Forecast 規約の詳細

NetCDF 用語の詳細

DSG フィーチャ タイプ

9 種類の DSG フィーチャがあります。 CF に準拠した DSG ファイルには、1 つのフィーチャ タイプのみが含まれます。 データセットの時空間座標間の関係は、DSG のフィーチャ タイプを定義するために使用されます。 データセット内のプロファイル、時系列、軌道フィーチャ タイプの場合、属性 cf_role を含む座標または補助座標変数は、オブジェクト ID 変数と識別されます。 この変数は、各フィーチャ インスタンスの一意の識別子を提供する必要があり、この変数のディメンションがインスタンスのディメンションの識別子となります。 ポイント タイプでは cf_role は必要ありませんが、データと座標の両方が同じインスタンス ディメンションを共有している必要があります。

ArcGIS Pro では、[NetCDF ポイント → フィーチャクラス (NetCDF Points To Feature Class)] ツール、[NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツール、[NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツール、[NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] ツールがそれぞれポイント、プロファイル、時系列、軌道の 4 種類の DSG フィーチャを読み取ることができます。 これらのツールは、マルチディメンション ツールボックスの NetCDF ツールセットで使用できます。

ポイント

ポイントは単一のデータ ポイントであり、他のポイントと暗黙的な座標関係はありません。 ポイント データは、測候所など点在する場所を表します。 データと座標は、同じインスタンス ディメンションを共有する必要があるため、エレメント ディメンションは必要ありません。 論理構造を以下に示します。

  • 同じインスタンス ディメンションを持つすべての変数: データ (I)、x(i)、y(i)、z(i, o)、および t(i) 同じインスタンス ディメンションを持つすべての変数: データ (I)、x(i)、y(i)、z(i, o)、および t(i)

DSG ポイント データ ファイルには、単一または複数のポイント フィーチャを含むことができます。 ポイントの数は、インスタンス ディメンションによって指定されます。 各ポイントには、複数のデータ変数を含めることができます。 関連する時空間補助座標変数を特定するには、各データ変数に対して座標属性を使用します。

netCF ファイルのポイントの探索

測候所データの例を検討します。 この例では、湿度 (i) と温度 (i) データが [NetCDF ポイント → フィーチャクラス (NetCDF Points To Feature Class)] ツールの [インスタンス変数] として使用される座標値の時間 (i)、緯度 (i)、経度 (i)、高度 (i) と関連付けられます。


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" ;

プロファイル

プロファイルは、垂直線沿いの固定水平位置と固定時間におけるデータ点の順序集合です。 プロファイルデータは、大気観測や海洋観測など、垂直線沿いの接続された一連の観測です。 プロファイルデータの論理構造は、以下の 2 つの部分に分かれています。

  • インスタンス ディメンションとエレメント ディメンションの両方を持つ観測変数 - データ (i、o)
  • 必須座標変数 - x(i)、y(i)、z(o)、t(i)

DSG プロファイルデータ ファイルには、単一のプロファイルフィーチャが含まれる場合と複数のプロファイルフィーチャが含まれる場合があります。 プロファイルの数は、インスタンス ディメンションによって指定されます。 プロファイルには、複数のインスタンス変数を含めることができます。 cf_role 属性を profile_id に設定したインスタンス変数 (データ型は問いません) が最低 1 つ必要です。 このインスタンス変数の値は、出力フィーチャクラスにフィールドを作成するために使用されます。 [NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールの [インスタンス変数] パラメーターを使用すると、他のインスタンス変数を選択して、出力フィーチャクラスに追加できます。 DSG プロファイルデータに複数の観測変数がある場合は、[観測変数] パラメーターを使用してそれらを選択し、出力テーブルに追加します。

NetCF ファイルのプロファイルの探索

大気観測プロファイルの例について考えてみましょう。 ツールでは、気圧 (i、o)、温度 (i、o)、湿度 (i、o) の各変数を観測変数として使用します。 これらの観測変数は、インスタンス (プロファイル) ディメンションまたはエレメント (z) ディメンションを通して必須座標値である時間 (i)、緯度 (i)、経度 (i)、z (o) と関連付けられます。 変数 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" ;

時系列

時系列は、単調に回数が増加する、同じ空間位置にある一連のデータ点です。 時系列データは、一定期間、一連の不連続な点または空間的位置で取得されます。 時系列データの論理構造は、以下の 2 つの部分に分かれています。

  • インスタンス ディメンションとエレメント ディメンションの両方を持つ観測変数 - データ (i、o)
  • 必須座標変数 - x(i)、y(i)、z(i、o)、t(i)

DSG プロファイルデータと同様に、DSG 時系列データ ファイルにも、単一または複数の時系列フィーチャが含まれます。 時系列の数も、インスタンス ディメンションによって指定されます。 複数のインスタンス変数と観測変数が存在する場合もあります。 cf_role 属性を timeseries_id に設定したインスタンス変数 (データ型は問いません) が最低 1 つ必要です。 [NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールの [インスタンス変数] パラメーターを使用すると、他のインスタンス変数を選択して、出力フィーチャクラスに追加できます。 [観測変数] パラメーターを使用して、追加する観測変数を選択し、出力テーブルに追加します。

NetCF ファイルの時系列の探索

観測所の時系列の例を考えてみましょう。 湿度 (i、o) は、ツール内で [観測変数] パラメーターの値として使用する観測変数です。 これは、インスタンス (観測所) ディメンションまたはエレメント (z) ディメンションを通して必須座標値である時間 (o)、緯度 (i)、経度 (i)、高度 (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";

軌道

軌道は、単調に回数が増加する、空間を通過する経路沿いの一連のデータ点です。 軌道のデータは、空間を通る不連続な経路に沿って取得されます。各経路は、飛行経路や船舶経路など、軌道と呼ばれる連続した点で構成されます。 軌道ファイルの論理構造は、以下の 2 つの部分に分かれています。

  • 観測変数 - データ (i、o)
  • 必須座標変数 - x(i、o)、y(i、o)、z(i、o)、t(i、o)

DSG プロファイルと時系列のデータと同様に、DSG 軌道データ ファイルにも、単一または複数の軌道フィーチャが含まれます。 cf_role 属性を trajectory_id に設定したインスタンス変数 (データ型は問いません) が最低 1 つ必要です。

NetCF ファイルの軌道の探索

気候観測気球の軌道の例を考えてみましょう。 NO3 (i、o) と O3 (i、o) は、インスタンス (軌道) とエレメント (obs) ディメンションを通じて時間 (i、o)、緯度 (i、o)、経度 (i、o)、z (i、o) と関連付けられている観測変数です。 変数 trajectory は、cf_role 属性を trajectory_id に設定したインスタンス変数です。 インスタンス (軌道) ディメンションまたはエレメント (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 衛星ナビゲーション システムで広く使用されている World Geodetic System 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 を使用しますが、ツールが両方をサポートしているため、この属性の値にはいずれも使用できます。 形式の違いに関する詳細は、ArcGIS Platform の Esri Tech Workbook の会報「Coordinate System Standards: A Primer to Understanding the Standards and Their Implementation (座標系の標準: 標準とのその導入を理解するための手引き)」の PDF ファイルをご参照ください。

複数の属性がグリッド マッピング変数に存在する場合、以下の優先スキーム順に従って空間参照が構成されます。

  1. EPSG コード
  2. 名前が付けられた投影座標系 (PCS)
  3. 名前が付けられた地理座標系 (GCS) と投影パラメーター
  4. 楕円体または球体の半径と投影のパラメーター
  5. 測地原点と投影のパラメーター
  6. 名前が付けられた GCS と投影のパラメーター
  7. 楕円体または球体の半径と投影のパラメーター
  8. 測地原点と投影のパラメーター

オプション 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 (縮尺係数と中心子午線) または 43004 Mercator (標準緯線と中央子午線)

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 (標準緯線)

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、最初の点の緯度

4 Standard parallel 2、2 番目の点の緯度

straight_vertical_longitude_from_pole

2 Central_Meridian

scale_factor_at_central_meridian

5 Scale_Factor

2D か 3D のフィーチャクラスが出力される場合があるため、水平座標系以外に、鉛直座標系 (VCS) も指定する必要があります。 通常、VCS は、鉛直測地基準系、メジャーの距離単位、鉛直座標が増加する方向 (上または下) を組み合わせたものです。 ArcGIS プロダクトは、シーン ビューでデータを正しく描画するために、この単位と軸方向を使用します。 変換される座標変数の 1 つが鉛直で、距離単位 (気圧単位などではなく) を指定する場合、VCS が必要です。

複数の方法で VCS を指定できます。

1 つの方法として、標準潮位基準面を示す標準名を使用することが挙げられます。 この場合、他の鉛直測地基準系を指定する必要はありません。 潮位基準面は、説明的メタデータです。 鉛直潮位基準面を持つデータセットは、別の鉛直測地基準系には変換できません。 潮位基準面を選択する標準名は、以下のとおりです。

  • 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 を指定する方法が挙げられます。

第 3 の方法として、grid_mapping 変数の geoid_name 属性または geopotential_datum_name 属性を使用する方法が挙げられます。 サポートされている鉛直測地基準系名の最新リストは、ArcGIS Developers サイトから PDF ファイルで入手可能です。

注意:

PDF ファイルをダウンロードするには、ArcGIS Online アカウントでサイン インする必要があります。

特に指定されなかった場合は、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 Parametric Vertical Coordinate (パラメーター鉛直座標)」の項で確認できます。

補足 Climate and Forecast メタデータ

CF 規約はメタデータの定義に使用されます。メタデータは、各変数のデータに関する最も信頼のおける説明と、それらの空間プロパティと時間プロパティを提供します。 この規約を参照することで、複数のデータソースのどれだけの数量が同等かを特定しやすくなります。

NetCDF 規約の詳細

規約の名前は、netCDF ファイルでグローバル属性として表されます。 DSG ツールによる読み込みのため、入力 DSG データを CF 規約 バージョン 1.6 以降に準拠させる必要があります。

多くの NetCDF ファイルには、古い CF 規約に準拠しているか、必要な属性を欠いているインスタンス変数と観測変数が含まれます。 CF に準拠していないこれらの NetCDF ファイルを ArcGIS Pro DSG ツールへの入力として使用する場合は、[入力 Climate and Forecast メタデータ] パラメーターを使用して、これらのファイルに対応する追加のメタデータ XML ファイルを指定します。 メタデータ ファイルは、NetCDF Markup Language (NcML) を使用して記述する必要があります。

NetCDF Markup Language

NcML は、NetCDF メタデータの XML 表現で、これを使用することで、入力 NetCDF ファイル内の欠落しているメタデータまたは誤ったメタデータを定義したり再定義したりできます。 NcML ファイルを使用すると、変数を変更、削除、または再構成できます。

[入力 Climate and Forecast メタデータ] パラメーターを使用すると、入力 NetCDF ファイルを変更したり、同ファイルを CF に準拠させたりせずに、CF に準拠していない NetCDF ファイルを使用できます。 CF に準拠していない入力 NetCDF ファイルごとに個別の NcML を作成する必要はありません。 同じ 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 ツールによって読み取り可能とするには、Climate and Forecast メタデータ 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 軌道の例では、インスタンス座標に、本来 trajectory_id に指定すべきところを誤って profile_id に指定された cf_role 属性があります。


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 ツールは、1 つの一次出力フィーチャクラスと、1 つまたは 2 つの任意の出力を作成します。 いずれの観測変数やインスタンス変数も選択しなかった場合は、1 つの出力フィーチャクラスのみが作成されます。 出力フィーチャクラスには、別途 1 つ以上のフィールドが設けられます。 1 つは InstanceID フィールドで、DSG ツールによって作成される DSG フィーチャの一意識別子です。 [NetCDF ポイント → フィーチャクラス (NetCDF Points To Feature Class)] 以外の 3 つの DSG ツールについては、もう 1 つのフィールドは、cf_role 属性を持つ入力 NetCDF ファイルのインスタンス変数から作成されます。 フィールド エイリアスは、変数名と同じになります。

DSG ツールからの出力フィーチャの性質を説明するため、出力フィーチャクラス属性テーブルの最初の数件のレコードを以下に例示します。 いずれの場合も、ツールが識別され、言及されている特定フィールドがハイライトされています。 これらの例は、各ツールのデフォルト設定を使用して作成されています (たとえば、[NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールのデフォルト出力スキーマは [観測とインスタンス] です)。

最初の例は、観測所データを使用して、[NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールから出力されたフィーチャクラスの属性テーブルから取られたものです。 追加フィールドは InstanceIDstnID で、stnID フィールドは、cf_role 属性が timeseries_id に設定されたインスタンス変数の名前です。

[NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールから出力されたフィーチャクラス属性テーブルの InstanceID フィールドと stnID フィールド

[NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールから出力されるフィーチャクラス属性テーブルには、もう 1 つのフィールド Time (UTC) が用意されますが、これは、各プロファイル インスタンスのデータが作成された時刻を示します。

[NetCDF プロファイル → フィーチャクラス (NetCDF Profiles To Feature Class)] ツールから出力されるフィーチャクラス属性テーブルの Time (UTC) フィールド

[NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] ツールから出力されるフィーチャクラス属性テーブルには、各軌道の開始時間と終了時間を示す 2 つの追加フィールド From Time (UTC)To Time (UTC) が用意されます。 これらの時間フィールドは、入力 NetCDF ファイルの時間座標変数から作成されます。 フィールド エイリアスに示されるとおり、これらの時間フィールドは、協定世界時 (UTC) 形式です。

[NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] ツールから出力されるフィーチャクラス属性テーブルの From Time (UTC) フィールドと To Time (UTC) フィールド

ツールで指定されたインスタンス変数ごとに、出力フィーチャクラス属性テーブルに、変数名をフィールド名とする 1 つのフィールドが追加されます。 フィールド エイリアスは標準名または長い名前で、変数名の後に括弧が続きます。 標準名も長い名前も定義されていない場合、フィールド エイリアスが変数名になります。 測候所データを使用する [NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールから出力されるフィーチャクラス属性テーブルには、追加で stnName フィールドが用意されます。 選択されたインスタンス変数の長い名前である Station Name がエイリアスとして使用されます。

[NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールから出力されたフィーチャクラス属性テーブルに Station Name として追加された、選択済みインスタンス変数 stnName

観測変数を指定するには、出力テーブルの名前と、任意でフィーチャ レイヤーの名前を指定する必要があります。 [NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールと [NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツール用の任意のフィーチャ レイヤー出力が利用できます。

出力テーブルには、2 つ以上の追加フィールドが用意されます。 最初の追加フィールドは、各観測レコードに一意の ID を割り当てるために DSG ツールにより作成される ObservationID フィールドです。 2 番目の追加フィールドは、フィーチャクラス出力と同じで、インスタンス フィーチャクラスを観測テーブルに結合するために外部キーとして使用される InstanceID です。

ツールによって、出力されるテーブルには、異なる追加フィールドが設けられます。 エレメント ディメンションと関連付けられた座標変数は、出力テーブルの新しいフィールドとなります。 DSG ツールから出力されるフィーチャの性質を説明する方法と同様、出力テーブルの最初の数件のレコードの例も示しています。 いずれの場合も、ツールが識別され、言及されている特定フィールドがハイライトされています。

時間座標から作成される Time (UTC) フィールドが [NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールに追加されますが、このフィールドは、各データが時系列内で取得された時刻を示します。 以下の例は、測候所データを使用してこのツールから作成された出力テーブルです。 追加フィールドは ObservationIDInstanceIDTime (UTC)daily max temperature (選択された観測変数 Tmax の標準名) です。

[NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールから出力されたテーブルの例

[NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] 出力テーブルでは、Time (UTC) フィールド、From Time (UTC) フィールド、To Time (UTC) フィールドのほか、選択された観測変数が追加されます。 From Time (UTC) フィールドと To Time (UTC) フィールドは、観測間の時間の中間点です。

[NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] ツールから出力されるテーブルの例

Z フィールドが [NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールに追加されますが、このフィールドは、プロファイル内で各データが取得された深さまたは高さを示します。 選択した観測変数も、新しいフィールドとして追加されます。

[NetCDF プロファイル → フィーチャクラス (NetCDF Profiles To Feature Class)] ツールから出力されるテーブルの例

[出力結合レイヤー] パラメーターを指定すると、[NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールと [NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールがこのパラメーターで指定された名前を使用して、任意のフィーチャ レイヤーを作成します。 出力されるフィーチャ レイヤーは、InstanceID フィールドをキーとして使用して出力テーブルに結合された出力フィーチャクラスです。 以下は、[NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールから出力されるフィーチャ レイヤーの属性テーブルの一部です。

[NetCDF プロファイル → フィーチャクラス (NetCDF Profiles To Feature Class)] ツールから出力されるフィーチャ レイヤー属性テーブルの例

[NetCDF ポイント → フィーチャクラス (NetCDF Points to Feature Class)] ツールの場合、出力フィーチャクラス テーブルに追加の InstanceID フィールドと、選択されたすべての [インスタンス変数] パラメーター値が作成されます。

適切な出力スキーマの指定

DSG ツールは、使用目的に応じて異なる種類の出力スキーマを作成できます。 [NetCDF 時系列 → フィーチャクラス (NetCDF Time Series To Feature Class)] ツールは、1 種類のスキーマのみを作成します。 [NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Class)] ツールと [NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] ツールには、スキーマ タイプを選択するために使用できるパラメーターが含まれます。

[NetCDF プロファイル → フィーチャクラス (NetCDF Profiles To Feature Class)] ツールの出力スキーマ

[NetCDF プロファイル → フィーチャクラス (NetCDF Profile To Feature Clas)] ツールでは、[出力スキーマ] パラメーターを使用して、[インスタンスと観測][ルートとイベント][ポイント 3D] から出力スキーマを選択できます。 [インスタンスと観測] オプションがデフォルトのスキーマ タイプです。 このパラメーターの出力については、上の DSG ツールの出力のセクションで説明しています。

[出力スキーマ] パラメーターを [ルートとイベント] に設定すると、ツールが構造の異なる出力フィーチャクラスと出力イベント テーブルを作成します。 任意の出力は使用できません。 出力フィーチャクラスは、頂点に深さ (z 値) を測定値として表示した 3D 垂直ポリラインとなります。 [インスタンスと観測] オプションにより追加されるものと同じフィールドが出力フィーチャクラスに追加されます。

出力テーブルには、プロファイルに沿ったリニア イベントに使用できる FromZToZ の 2 つの新しいフィールドが設けられます。 FromZ フィールドと ToZ フィールドの値は、z 値と同じである最初の FromZ の値と最後の ToZ の値を除き、観測 z 値の中間点です。 このスキーマから出力されるテーブルも、リニア イベント フィーチャを作成するために、リニア リファレンス ツールと併用できます。

リニア リファレンスの詳細

下の画像は、サンプルの出力属性テーブルの一部を示しています。

ルートとイベントを出力スキーマに設定した [NetCDF プロファイル → フィーチャクラス (NetCDF Profiles To Feature Class)] ツールから出力されるテーブルの追加フィールド FromZ と ToZ

[出力スキーマ] パラメーターを [ポイント 3D] に設定すると、3D ポイント フィーチャクラスが作成されます (テーブルも任意の結合レイヤー出力も作成されません)。 出力フィーチャクラスの属性テーブルには、[インスタンスと観測] オプションと比較される選択済み観測変数から作成される追加フィールドが設けられます。 このスキーマを使用して出力されるフィーチャクラスの属性テーブルには InstanceID フィールドが設けられますが、値がすべて一意になるとは限りません。

ポイント 3D を出力スキーマに設定した [NetCDF プロファイル → フィーチャクラス (NetCDF Profiles To Feature Class)] ツールから出力されるフィーチャクラス属性テーブルの例

どのスキーマを使用するかを判断するために従うべき一般的なガイドラインがいくつかあります。

[インスタンスと観測] オプションは、多くの場合、最も効率の良いソリューションを提供します。 出力フィーチャクラスは、各プロファイルの位置を維持し、観測データは、別のテーブルに保存されます。 ただし、出力テーブルの観測データを出力フィーチャクラスに結合できますが、出力フィーチャ レイヤーに一意のオブジェクト ID が存在しない場合は、一意の ID が必要なツールで出力フィーチャ レイヤーを使用できません。

このツールの出力を ID フィールドに一意の値が必要な別のツールで使用する必要がある場合は、[ポイント 3D] オプションを使用します。 結果として出力されるフィーチャクラスは、[インスタンスと観測] オプションを使用した場合の結果より大きくなることがあり、処理時間が長くなることがあります。

ポリライン出力が予測される場合は、必ず [ルートとイベント] オプションを使用してください。 3D 垂直線は、各プロファイルの垂直プロパティをより良く図示できます。

[NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] ツールの出力スキーマ

[NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class)] ツールの出力スキーマ ツールでは、[出力スキーマ] パラメーターを使用して、[ルートとイベント][ポイント] の 2 種類の出力スキーマを選択できます。 [ルートとイベント] オプションがデフォルトのスキーマ タイプです。 このオプションの出力については、上の DSG ツールの出力のセクションで説明しています。

[出力スキーマ] パラメーターを [ポイント] に設定すると、ツールは、観測が行われる各軌道沿いの位置を示す 2D または 3D のポイント フィーチャクラスを作成します。 以下に例示する出力フィーチャクラス属性テーブルでは、[ルートとイベント] オプションを使用して作成される From Time (UTC) フィールドと To Time (UTC) フィールドの代わりに、Time (UTC) フィールドが時間座標変数から作成されます。 選択された観測変数から作成されたフィールドも含まれます。

ポイントを出力スキーマに設定した NetCDF 軌道 → フィーチャクラス (NetCDF Trajectories To Feature Class) ツールから出力されたフィーチャクラス属性テーブルの追加フィールド Time (UTC) と sea_temperature

軌道の全体経路を使用するには、[出力スキーマ] パラメーターを [ルートとイベント] に設定します。 このオプションを使用すると、出力をリニア リファレンス ツールと併用して、リニア イベント フィーチャを作成できます。 軌跡沿いの各位置の個々のポイントが必要な場合は、[ポイント] オプションを使用します。

参考文献

  • CF メタデータ規約。 https://cfconventions.org/ (2022 年 4 月 18 日に最終アクセス)。
  • NetCDF 規約。 https://www.unidata.ucar.edu/software/netcdf/conventions.html (2022 年 4 月 18 日に最終アクセス)。
  • 注釈付きの NcML 用スキーマ。 https://docs.unidata.ucar.edu/netcdf-java/current/userguide/annotated_ncml_schema.html (2022 年 4 月 18 日に最終アクセス)。
  • NcML の基本チュートリアル。 https://docs.unidata.ucar.edu/netcdf-java/current/userguide/basic_ncml_tutorial.html (2022 年 4 月 18 日に最終アクセス)。

関連トピック