この記事の目次
Argoデータをダウンロードして初めて.ncファイルを開くと、海洋プロファイルを期待していたのに、変数、次元、メタデータ、品質管理フラグの長い一覧が表示されるため、戸惑うことがよくあります。
多くの初心者がArgoのNetCDF形式の解説を探すのは、そのためです。つまずくのはデータの有無ではなく、ファイルがどう構成されていて、最初にどこを見ればよいのかが分からない点です。
この記事では、NetCDFとは何か、Argoのプロファイルデータファイルの一般的な構造、最初に確認する変数、初心者が誤解しやすい点を説明します。さらに、本格的にコードを書き始める前にOceanGraphでデータを理解する方法も紹介します。
ファイル形式より先にプロファイル中心の概要を知りたい場合は、初心者向けArgoフロートデータの読み方 から始めてください。
NetCDFとは
NetCDFはNetwork Common Data Formの略で、複数の変数、メタデータ、時刻・深さ・緯度・経度などの次元を持つ科学データに広く使われるファイル形式です。
次の情報を一つのファイルに格納できるため、海洋学でよく利用されます。
- 測定値の配列
- 座標
- 単位
- メタデータ
- 品質情報
- 複数の次元
多くの情報を一つにまとめられる反面、そのままでは初心者が読みやすい形式とは言えません。
NetCDFファイルを開いても、プロファイルの内容が文章で説明されているわけではなく、目に入るのはデータ構造だけなので、まずはその構造を実際の測定内容と結び付けて読み解きます。
ArgoがNetCDFを使う理由
Argoデータは水温値が一列に並んだだけのものではなく、一つのプロファイルには次の情報が含まれます。
- フロートの識別情報
- サイクル情報
- 位置
- 時刻
- 圧力レベル
- 水温と塩分
- 品質フラグ
- 場合によっては酸素などの追加変数
NetCDFを使えば、これらの要素を機械で処理しやすい一貫した形式にまとめられますが、保存とデータ交換のために最適化された形式であり、初心者がそのまま読んで理解できるようには作られていません。
Argoファイルを層に分けて考える
Argo NetCDFファイルを理解するには、すべての変数名を暗記するのではなく、情報を層に分けます。
一つのArgoプロファイルデータファイルは、概ね次の要素の組み合わせでできています。
- プロファイルを特定する情報
- 測定値の配列
- 品質と状態の情報
- 観測機器や処理に関するメタデータ
この順番で読めば、理解しやすくなります。
1. プロファイルを特定する情報
測定配列を見る前に、どのプロファイルを扱っているのかを特定します。
まず確認したいのは次の点です。
- どのフロートが取得したか
- 何番目のサイクルか
- いつ取得されたか
- どこで報告されたか
よく使われる項目には、次のようなものがあります。
- フロート識別情報の
PLATFORM_NUMBER - 取得順を示す
CYCLE_NUMBER - 時刻情報の
JULD LATITUDELONGITUDE
項目の組み合わせはファイル種別や処理レベルによって変わりますが、共通する目的は、測定値を解釈する前に、そのプロファイルがいつ・どこで取得されたのかを押さえることです。
Argoデータは、変数名の一覧としてではなく、一つのプロファイルとして捉えると理解しやすくなります。
2. 測定配列:水柱から得られた値
どのプロファイルか分かったら測定配列へ進みます。多くのCore Argoのプロファイルデータでは、次の変数が特に重要です。
PRESTEMPPSAL
それぞれ、通常は次の値を表します。
- 圧力
- 水温
- 実用塩分
次のような補正済みの値を含むファイルもあります。
PRES_ADJUSTEDTEMP_ADJUSTEDPSAL_ADJUSTED
PRES、TEMP、PSALは、それぞれ圧力、現場水温、実用塩分を格納するCoreの生の変数です。ポテンシャル水温と絶対塩分は派生量であり、標準的なCore Argoのプロファイルデータでこれらの変数を置き換えるものではありません。
初心者が押さえておくべきポイントはシンプルです。
- 主要なプロファイル変数を最初に特定する
- 生の値と補正済みの値を選ぶ前にデータモードを確認する
- 一度にすべての変数を解釈しようとしない
BGC Argoデータでは、溶存酸素などのセンサー変数も現れます。ただし、最初に全体を理解するには、圧力、水温、塩分で十分なことが多いでしょう。
3. 品質情報:すべての値を同じように信頼できるか
Argo NetCDFファイルが複雑に見える理由の一つは、測定値だけでなく、次のような品質情報も格納されていることです。
PRES_QCTEMP_QCPSAL_QCPOSITION_QC
具体的な意味は各ファイルのArgo規約に従いますが、品質フラグを確認しないまま、すべての値を同列に扱ってはいけない点は共通しています。
初心者は、次の点を意識してください。
- QC項目を見ても慌てない
- データを正しく解釈するには品質情報の確認が欠かせないと心得る
- データモードに従って生の値か補正済みの値を選び、科学的に解釈する前に対応するQCと誤差の項目を使う
疑わしい値や欠損値が一部にあっても、プロファイル全体が使えないとは限りません。
4. 次元:配列の形が違う理由
配列構造も、よくある混乱の原因です。
Argo NetCDFファイルでは、次のような次元で値を整理します。
- プロファイル数
- 鉛直レベル数
- パラメーター数
そのため、一次元に見える変数もあれば、複数の次元にまたがって格納される変数もあります。
表計算ソフトのような単純な表を想定していると、データが次のような階層構造になっているため、ここでつまずきます。
- 一つのプロファイルデータファイルが複数のプロファイルまたはサンプリング系列を持つことがある
- 一つのプロファイルが多数の深度または圧力レベルを持つ
- 各レベルに複数の測定変数がある
バージョン3のプロファイルデータファイルでは、一般に N_PROF、N_LEVELS、N_PARAM などの次元で表されます。一つのサイクルに異なる鉛直サンプリング系列が含まれると N_PROF が2以上になるため、サイクル番号と単一のレベル配列は必ずしも一対一ではありません。
ただし、次元の設計をすべて理解する必要はなく、まずは見たい測定値がどの配列に入っているかが分かれば十分です。
最初に確認する変数
Argo NetCDFファイルを開き、最短で理解したいなら、次の順で確認します。
- フロート識別情報
- サイクル番号
- 時刻
- 緯度と経度
DATA_MODE(BGCパラメーターではPARAMETER_DATA_MODE)- 適切な生または補正済みの項目から取得した圧力、水温、塩分
- 対応する品質管理項目と誤差項目
変数をアルファベット順に眺めるよりも、科学的な作業の流れに沿った順序です。
この順に見ていけば、次の点を確認できます。
- これはどのプロファイルか
- いつ、どこで起きたか
- 水柱はどのような構造か
- 考慮すべき品質上の問題があるか
生の変数と補正済み変数
初心者が戸惑いやすいのが、生の測定値らしき変数と補正済み変数が並んで存在することです。
例えば、次のような組み合わせです。
TEMPTEMP_ADJUSTED
あるいは、次の組み合わせです。
PSALPSAL_ADJUSTED
補正済みの値はArgoの較正または補正が適用された値ですが、補正はリアルタイム(A)でも遅延品質管理(D)でも行われるため、単に「後から直した値」という意味ではありません。
補正済み配列が存在するかどうかを目で推測せず、データモードに従って選びます。
- Coreプロファイルでは
DATA_MODEを読みます。RならPARAMとPARAM_QC、AまたはDならPARAM_ADJUSTEDとPARAM_ADJUSTED_QC、必要に応じてPARAM_ADJUSTED_ERRORを使います。 - BGCプロファイルでは、パラメーターごとに処理段階が異なるため、
DATA_MODEだけでは不十分であり、各パラメーター・プロファイルのPARAMETER_DATA_MODEを読みます。AまたはDならそのパラメーターの補正済み項目を使いますが、Rでは生の値しかありません。なおArgoは、生のBGC値は一般に非専門家がそのまま科学利用するのに十分な精度ではないと注意しています。
生の値と補正済み側のQCフラグを組み合わせたり、明確な科学的理由なく生と補正済みのパラメーターを混在させたりしてはいけません。
初心者によくある誤り
多くの問題は、ファイルを見る順番を間違えることで起きます。
プロファイルの情報より先にファイル構造を見る
難解な変数や次元から手を付けるとファイルは抽象的なものにしか見えないため、まずはフロート、サイクル、時刻、位置から確認しましょう。
一つのプロファイルをフロート全体と考える
Argoフロートは多数のサイクルを繰り返します。一つのプロファイルは、その履歴の一部であって、全体ではありません。
品質項目を完全に無視する
すべてのフラグをすぐに暗記する必要はありませんが、値を科学的に利用できるものとして扱う前に、データモードとQCに基づく判断が必要です。見た目がもっともらしいことは、ArgoのQCの代わりにはなりません。
圧力を単なる表示用の座標だと考える
圧力はプロファイルの基準となる鉛直座標であり、水柱の構造をどう読むかを左右します。
可視化する前にすべてを理解しようとする
これは特にありがちな失敗ですが、プロファイルは図にすると構造を読み取りやすくなります。
Argo NetCDFファイルを読みやすくする例
多数の変数名を含むプロファイルデータファイルを開いたとします。
初心者には、次の流れが適しています。
- フロートとサイクルを特定する
- 日付と場所を確認する
- 圧力、水温、塩分の配列を見つける
- 対応するデータモードを読み、生の変数か補正済み変数を選ぶ
- 対応するQCを適用し、解析上必要なら誤差推定値も確認する
- 選択して品質を確認したプロファイルを作図する、または視覚的に確認する
この順番で進めれば、分かりにくいNetCDFファイルも、海の鉛直構造を記録した一つのプロファイルとして理解できるようになります。
従来の流れ:Pythonから始める
PythonでArgo NetCDFファイルを直接開き、科学計算ライブラリを使って一から図を作る方法は一般的で、それ自体は妥当ですが、初心者は次のような問題にぶつかりがちです。
- NetCDFに慣れていない
- 変数名を見ても最初は意味が分からない
- 品質フラグの扱いで最初の読み込みが止まってしまう
- 水柱の構造を理解する前に、配列の添字まわりのデバッグに追われる
- 複数ファイルを比較するにも準備が必要になる
最初の目的が自動化ではなく理解なら、必要以上に重い作業になることがあります。
なお、NetCDFのプロファイルを自分のWebアプリで表示する場合は、どこまでを事前処理で済ませ、どこからブラウザで扱うかを決める必要があります。NetCDFからブラウザ可視化まで:海洋データWebアプリの設計で、その分担を説明しています。
ファイルより先にプロファイルを理解する
OceanGraphを使うと、ファイルの構造からではなく、プロファイルが示す水柱の構造からArgoデータを読み始められます。
ファイルの解析処理から始めなくても、次のことができます。
- 海域、時刻、WMO IDで実際のプロファイルを検索する
- 日付、場所、WMO ID、サイクル番号を直接確認する
- 鉛直プロファイルをすぐに開く
- コードで処理する対象を決める前に、複数のプロファイルを比較する
次のページも参考になります。
- Search and Bookmark(英語)
- Analysis Lab: Vertical Profiles(JSONアップロード、英語)
- Pythonを使わずにArgoフロートデータを可視化する手順

注目すべきフロート、サイクル、パターンが先に分かっていれば、NetCDFファイルに戻ったときの理解が格段に楽になります。
ファイルを解析する前にArgoデータを探索する
まずデータが何を表しているかを理解したいなら、ファイルを直接解析する前にOceanGraphでプロファイルを確認できます。NetCDFの構造を詳しく調べる前に、その中に含まれる海洋プロファイルを見ておけば、ファイルへ戻ったときにも内容を結び付けやすくなります。
よくある質問
ArgoデータにおけるNetCDFとは何ですか
Argoの変数、座標、メタデータ、品質情報を構造化して格納するための科学データ形式です。
Argo NetCDFファイルでは最初に何を見ればよいですか
フロート識別情報、サイクル番号、時刻、位置を確認します。次にデータモードを読み、対応する圧力、水温、塩分の項目を選び、そのQCと誤差情報を適用します。
QC変数が多いのはなぜですか
Argoデータが測定値とともに品質管理情報を含むためです。利用者がデータを適切に解釈する助けになります。
TEMP と TEMP_ADJUSTED の違いは何ですか
TEMPは生の現場水温です。Coreの DATA_MODE、またはBGCパラメーターの PARAMETER_DATA_MODE が AかDなら、較正・補正済みの TEMP_ADJUSTED を使います。選んだ値と同じ側のQC項目を使ってください。
Argo NetCDFを理解するにはPythonが必要ですか
必要ありません。Pythonは詳しい解析に役立ちますが、最初にプロファイルを可視化し、その後でファイル構造へ戻るほうが速く理解できる初心者も多くいます。
まとめ
Argo NetCDF形式を最初に難しく感じるのは、プロファイルの内容より先にデータ構造が提示されるためです。科学的な順序で読めば、論理は明確になります。プロファイルを特定して時間と空間に位置付け、適切なデータモードから生または補正済みの値を選び、対応する品質情報を適用してから解釈します。
初心者には、実際のプロファイルを先に見て、そこに記録された水温や塩分の意味が分かってからファイル構造を調べる方法が効果的です。OceanGraphでは、そのプロファイルを検索して可視化できます。
