NetCDF (.nc)

予備知識

    • MIMEタイプ:application/x-netcdf
    • NetCDFデータファイル形式.
    • 科学データ交換のための自己記述的形式.
    • 大気研究,地理情報システム(GIS)とそれらの関連分野で使われている.
    • NetCDFはnetwork Common Data Formからの派生語である.
    • バイナリファイル形式.
    • 概念はNASAのCommon Data Formatに基づいているが,この形式との互換性はない.
    • 大気研究大学連合(University Corporation for Atmospheric Research,UCAR)のUnidataセンターにより開発された.

ImportとExport

  • Import["file.nc"]はnetCDFファイルをインポートして,このファイルに格納されているデータ集合の名前を返す.
  • Import["file.nc",elem]はnetCDFファイルから指定された要素をインポートする.
  • インポート形式はImport["file","NetCDF"]またはImport["file",{"NetCDF",elem,}]で指定できる.
  • Export["file.nc",expr]は数値配列をnetCDFにエキスポートする.
  • Export["file.nc",{expr1,}, {"Datasets",{"dataset1",}}] はデータの配列{expr1,}を別々のデータとして保管し,netCDFファイルを作成する.
  • Export["file.nc",expr,elem]は指定された要素をnetCDFファイルにエキスポートする.
  • Export["file.nc",elem1->expr1,,"Rules"] は規則を使ってエキスポートする要素を指定する.
  • 一般的な情報は,以下の関数ページを参照のこと.
  • Import, Exportファイルからインポートする,あるいはファイルへエキスポートする
    CloudImport, CloudExportクラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする
    ImportString, ExportString文字列からインポートする,あるいは文字列へエキスポートする
    ImportByteArray, ExportByteArrayバイト配列からインポートする,あるいはバイト配列へエキスポートする

Import要素

  • 一般的なImport要素:
  • "Elements" ファイル中の有効な要素とオプションのリスト
    "Summary"ファイルの概要
    "Rules"使用可能なすべての要素の規則のリスト
  • 構造要素:
  • "Datasets"全データ集合の名前
    "Groups"全グループの名前
    "StructureGraph"データ集合の構造を示す有向グラフ
    "StructureGraphLegend"構造化されたグラフの凡例
    "Summary"特性の概要
    "Version"ファイルのNetCDFのバージョン
  • グループとデータ集合の名前は,ルートグループ名「/」で始まる絶対パスで与えられる.
  • ImportはnetCDF形式に対してデフォルトで"Datasets"要素を使用する.
  • データ表現要素:
  • "Data"連想としてインポートされるすべてのデータ集合
    {"Data",dataset} or dataset名前付きデータ集合
    {"Data",groupname}groupname に属するすべてのデータ集合の連想
  • サポートされる基本的なデータ型:
  • "Integer8"8ビット整数
    "Integer16"16ビット整数
    "Integer32"32ビット整数
    "Integer64"64ビット整数
    "UnsignedInteger8"8ビット符号なし整数
    "UnsignedInteger16"16ビット符号なし整数
    "UnsignedInteger32"32ビット符号なし整数
    "UnsignedInteger64"64ビット符号なし整数
    "Real32"IEEE単精度数
    "Real64"IEEE倍精度数
    "String"ASCII文字の文字列
  • サポートされる構造化されたデータ型:
  • "ByteArray"任意長のByteArray
    "Enum"列挙
    "Compound"他の任意のデータ型と複合データ集合から成る複合データ集合
  • メタデータ要素:
  • "Attributes"全グループとデータ集合の属性
    "DataEncoding"各データ集合の圧縮方法を指定する
    "DataFormat"各データ集合を表すのに使用する型
    "Dimensions"各データ集合のデータ次元
    "DimensionNames"各データ集合の次元の名前
    {"metadata",dataset}名前付きデータ集合のメタデータ
    "Metadata"一般的な属性 (ルートグループの属性)

Export要素

  • 一般的なExport要素:
  • "Rules"elemexpr という形で表されたインポートされた要素のリスト
  • Export["file.nc",{elem1->expr1,},"Rules"]は規則を使ってエキスポートする要素を指定する.
  • 利用可能なExport要素には以下のものがある:
  • "Attributes"グループとデータ集合に関連付けられた属性
    "Datasets"データ集合とそれらの関連する要素
    "Dimensions"データ集合の次元
    "Groups"グループ名のリスト
    "NamedDataTypes"名付けられたデータタイプ
  • "Attributes" 要素を使うと,以下の式が与えられる:
  • attrルートグループ "/"に関連づけられた属性
    {path1attr1,}指定された pathi に関連づけられた属性 attri
  • 属性 attri"attname"->attvalの形式で与えられなければならない.
  • "Datasets"要素を使って以下の式が与えられる:
  • data"Dataset1"data を格納する
    {"name1"data1,}データ集合名とそれに関連付けられたデータのリスト
    {"name1"ds1,}規則のリストを使って各データ集合 dsi を指定する
  • データ集合 dsi は以下のキーを取ることができる:
  • "Attributes"データ集合属性
    "Data"データ配列
    "DataEncoding"使用するための1つ以上のデータ符号化
    "DataFormat"データ型
    "DimensionNames"配列の次元に関連付けられた名前
  • "NamedDataTypes" 要素は {"name1"type1,} のリストになる.ここで,各 typei は以下の形式の連想となる:
  • <|"Class""ByteArray",|>"Length" キーを取る
    <|"Class""Compound",|>"Dimensions""Structure" キーを取る
    <|"Class""Enumerated",|>"DataFormat""Structure"を取る
    <|"Class""RaggedArray",|>"DataFormat""Dimensions"キーを取る

Options

  • Export オプション:
  • ByteOrdering$ByteOrdering使用するバイトの順序
    OverwriteTargetTrue既存のファイルに上書きするかどうか
    "Version""NC4 Enhanced"生成するファイル形式のバージョン
  • OverwriteTarget->"Append"を使うと,新しいオブジェクトは既存ファイルに追加できる.
  • "Version" には次の値が使用可能である: "Classic" (Version 3), "Classic 64bit""NC4 Classic""NC4 Enhanced" (Version 4).

例題

すべて開くすべて閉じる

  (3)

netCDFファイルにあるデータ集合の名前を得る:

ファイルの概要を見る:

netCDFファイルからメタ情報を読み込む:

NetCDF形式でラスタ画像データをエキスポートする:

このファイルに格納されたデータ集合の名前が与えられている:

スコープ  (13)

Import  (7)

ファイル内の利用できるすべての要素を示す:

デフォルトでは,Importはファイル内のデータ集合のリストを返す:

形式を明示的に指定してファイル構造をインポートする:

名前を特定することでデータ集合の内容をインポートする

ファイル内のすべてのデータ集合の次元とデータ型をインポートする:

単一のデータ集合の次元とデータ型をインポートする:

データ集合をインポートする:

インポートした画像をグラフィックスとしてレンダリングする:

Export  (6)

配列をNetCDFにエキスポートする:

このファイルに含まれているデータ集合を見る:

名前付きのデータ集合をエキスポートする:

2つの配列をNetCDFにエキスポートする:

与えられたデータタイプを持つ名前付きのデータ集合をエキスポートする:

そのデータ形式をインポートする:

グループの中の名前付き複合データ形式をエキスポートする:

ファイル構造をインポートする:

属性を持つ名前付きデータ集合をエキスポートする:

特定のグループの属性をインポートする:

ファイルの中に格納された全ての属性をインポートする:

Import要素  (23)

Attributes  (3)

ファイル内のすべてのグループまたはデータ集合の属性をインポートする:

指定のデータ集合の属性をインポートする:

複数のオブジェクトの属性をインポートする:

Data  (3)

ファイル内のすべてのデータ集合のデータを取得する:

"MyGroup"グループの中のデータ集合"MyData" からデータをインポートする:

1つだけのデータ集合からデータをインポートする場合, "Data"要素を特に指定する必要はない:

複数のデータ集合からデータをインポートする:

DataFormat  (2)

ファイル内のすべてのデータ集合のデータ型についての記述を取得する:

簡単な数値型と文字列型は1単語で記述されている:

複合型の"DataFormat"はクラスと構造を示す:

列挙型の"DataFormat"にはクラス,ベースデータ形式,値と名前のリストが含まれる:

Datasets  (2)

ファイル中のすべてのデータ集合の名前をインポートする:

"Datasets" はnetCDF要素のデフォルトである:

Dimensions  (3)

ファイル内のすべてのデータ集合の次元を取得する:

要素を一つしか含まないデータの次元は空のリストで示される:

特定のデータ集合の次元を取得する:

DimensionNames  (2)

ファイルの中ですべてのデータ集合の次元の名前を取得する:

特別なデータ集合の次元の名前を取得する:

Groups  (1)

ファイル内のすべてのグループの名前をインポートする:

Metadata  (2)

(ルートグループの属性である)ファイルのメタデータを取得する:

メタデータは,データソースについての情報がわかることが多い:

NamedDimensions  (3)

ファイルから,名前付き次元をインポートする:

次元は無限かもしれない:

名前つき次元をインポートして,この次元に沿った座標値を取得する:

多くの場合,属性を調べると次元に関する詳細情報が得られる:

属性から取得した情報に従って時間座標を解釈する:

Summary  (1)

ファイルの概要を取得する:

Version  (1)

netCDF形式のバージョンを取得する:

NetCDFバージョン4をサポートしている:

Export要素  (25)

"Attributes"  (4)

根のグループに属性を付け加える:

属性のためのデータ形式を指定する:

"Datasets"要素と"Attributes"要素の両方でデータ集合属性をエキスポートする:

各属性には同じオブジェクトに付けられているすべての属性の中で一意の名前を付ける必要がある:

既存のファイルの中の属性値を上書きする:

"Datasets"  (10)

"Datasets"はデフォルトのエキスポート要素である.データの形式と次元は自動的に式から推測される:

式を異なるデータ集合へエキスポートする.それぞれにフルパスを指定することができる:

NetCDFファイルの構造を調べる:

カスタムのデータ形式を持つデータ集合をエキスポートする:

属性を持つデータ集合をエキスポートする:

単一の整数を持つスカラーのデータ集合を作成する:

整数の配列を作る:

実数の配列をエキスポートする:

文字列を持つデータ集合を作成する:

ByteArray"ByteArray"形式として保存される.(NetCDF4では不透明(OPAQUE)型とも言われる):

文字列キーを持つ属性は複合タイプの要素としてエキスポートされる:

"Groups"  (2)

NetCDFファイルは常にルートグループを持つ.(パスは"/"である):

パスのリストを与えることによって複数のグループをエキスポートする:

"NamedDatatypes"  (3)

混合した名前付きのデータ型をNetCDFファイルへエキスポートする:

データ集合をエキスポートするときに以前にエキスポートした型を使う:

そのデータ集合のデータ形式と次元をインポートする:

エキスポートしたデータを見てみる:

ネストされた複合型をエキスポートする:

文字列型はNetCDFファイルに保存することはできない:

"NamedDimensions"  (5)

NetCDFデータ集合の全ての次元は別々の実体としてファイルに保存されなければならない.次元の名前が明確に指定されていないときには自動的に名前が生成される:

次元の名前を明示的に指定する:

"name"sizeの形式で次元を明示的にエキスポートする.ここで, はサイズが無限の次元であることを意味する:

名前付きの次元は,後でデータ集合を定義するときに使うことができる:

"x"次元のサイズが増えてきたことに注意する:

ファイル構造を見る:

同じ名前のデータセットに保存される明示的な座標値を持つ次元をエクスポートする:

最初のいくつかの座標を指定するだけで無制限の次元を作成する:

"Rules"  (1)

"Rules"指定を使って,2つの配列をエキスポートする:

Exportオプション  (6)

OverwriteTarget  (2)

デフォルトでは,Exportが呼ばれるごとに新しいファイルが作成される:

OverwriteTargetFalseとすると,既存のファイルが上書きされない:

既存のファイルにデータ集合を追加するためには,OverwriteTarget"Append"を使う:

"Version"  (4)

デフォルトでは,Export はEnhancedデータモデルのNetCDF4ファイルを作成する:

データをClassic NetCDF形式にエキスポートする:

データを64ビットオフセットのClassic NetCDF形式にエキスポートする:

データをClassicデータモデルのNetCDF形式にエキスポートする:

アプリケーション  (1)

海面温度データのnetCDFファイルをダウンロードする:

このファイルについての一般的な情報をインポートする:

このファイルのすべてのデータ集合のリストを取得する:

すべてのデータ集合の属性を読む:

各データ集合に何が含まれているかを知るために説明を見る:

"/sst" データ集合のすべての属性を読む:

データ集合の次元をインポートする.時刻が第一次元であることに注意する:

データを読む:

(最初に重複したデータを削除し)集めたデータの範囲を測定して,小さな余白を追加する:

海面温度の変化を可視化する:

データがどのように集められたか等,メタデータを詳しく見ることでファイルの内容をさらに知ることができる:

特性と関係  (1)

どのnetCDF4ファイルもまた有効なHDF5ファイルである:

HDF5ファイルのすべてが有効なnetCDFファイルとは限らない:

単純なHDF5ファイルはnetCDFファイルのインポートによって読むことができる: