海洋シミュレーションデータを活用した
水産アプリケーションの開発基盤
石川洋一
海洋研究開発機構・地球情報基盤センター
協力:
OpenDAP勉強会
by京大小山田研・吉川研、東大喜連川研・柴崎研
内容
• 漁場推定モデル開発支援ツール
–
RECCAアカイカ課題で開発された漁場推定モデ
ルの概略
– 他海域・他魚種への適用のための漁場推定モ
デルの開発支援
• ツールの開発から学んだこと
– データベースの構築
– メタデータの重要性
目的
•
RECCAアカイカ課題で開発された漁場推定モ
デルを他海域、他魚種へ適用するための
ツールを
DIAS上で開発する
• ツール開発を通じて、他のアプリケーションで
も利用可能な開発基盤を
DIAS上で整備する
○は標本船の 操業位置
漁場推定モデル
RECCAでは三陸沖と中央太平洋のアカイカを 対象に開発 モデルコンセプトは他魚種へも適用可能 海洋環境データと対象魚種の漁獲データHSIモデル作成支援可視化ツール
• 概要
–
Webアプリケーション
– データベース連携
• サーバ選択
– 対話操作
• 環境変数の選別
•
SI曲線の作成
•
HSI分布図の作成
漁場探索モデル作成支援環境
• システム概要
漁場探索モデル作成支援環境
• メインビュー
漁場探索モデル作成支援環境
• 操作タブ
HSIモデル作成支援可視化ツール
• システム構成
App. サーバ DB サーバ ネットワーク ユーザ ユーザ端末 アプリケーション (1) Webサーバ (Apache) (2) ファイルシステム (HTML, CSS, JS) データベース (1) Webサーバ (Apache)(2) Servletコンテナ (Tomcat) → GDS (OPeNDAP) (3) ファイルシステム → GrADS
Webブラウザ
HSIモデル作成支援可視化ツール
• 漁獲データ:
Closed data
– 高いセキュリティが必要
– ローカルなデータとして扱う
• 海洋環境データ:
Open data
– 大規模データで多様な目的に利用可能
–
DIAS上でアーカイブ
– 必要な変数、領域のみ使いたい
– データベースの検討
データベースの必要性
• ファイル単位でのデータ取得の問題点
– ファイル単位?
•
1変数1時刻
•
1時刻多変数
•
1変数時系列 etc…..
– アクセス方法をデータセット毎に実装する必要
– 必要のない領域、変数までダウンロード
データベースミドルウェアの検討
OPeNDAP SciDB 導入実績 京大生存圏, NASA, NOAA LSST, PNNL バックエンド ファイルシステム 関係データベース 動作環境 Linux等 Linux スケーラビリティ ◎ 任意のファイルシステム ○ 独自 データ取得方法 プロトコル DAP, HTTP ODBC 内蔵分析機能 × ○ 拡張性 Handlerによって対応ファイル形式 を追加 オープンソース ◎ LGPL ○ AGPL(有償プラグインあり) クライアント言語
データベースミドルウェアの検討
•
OPeNDAP概要
–
HTTPベースのデータ転送プロトコル
– データにはURIが付与
– 複数のサーバおよびクライアント実装が存在
– 対応データ形式はサーバ実装に依存
–
Webサーバ、ファイルシステムで権限管理可能
データベースミドルウェアの検討
•
OpenDAPの利用例
–
URLを指定してHTTP通信
– クエリ構文
•
[i]
添字で指定のデータを取得
•
[start:stop]
添字で指定範囲のデータを取得
•
[start:step:stop]
添字で指定範囲のデータを一定間隔で取得
– セキュリティ
•
Webサーバ、Servletコンテナの認証が利用可能
hWp://xxx/yyy/ocean.dods?s[0][0][202:282][242:302]
メタデータの重要性
•
GrADSフォーマットの問題点
– データフォーマットの曖昧性
• 未定義値の信頼性
•
Z軸の向き
• 物理値の名称・単位
• など
– データファイルとメタデータファイルが別
• ファイルコピーなどで失われる危険
→ 専門分野内で暗黙的に解決
→ netCDF, CF conven_onsの適用を検討
メタデータの重要性
•
CF conven_ons
–
hWp://cfconven_ons.org
–
Version 1.7 (28 March, 2014)
–
CF standard name
•
sea_surface_height_above_sea_level (sea_surface_height)
•
sea_surface_temperature
•
eastward_sea_water_velocity
•
sea_water_x_velocity (x_sea_water_velocity)
•
northward_sea_water_velocity
•
sea_water_y_velocity (y_sea_water_velocity)
•
…
メタデータの重要性
• 出力変数の基本要素
– 出力される点の位置
• 定義点の値
• 値の単位
– 変数の内容
• 名前(標準化された文字情報)
• 未定義値
• 単位(標準化された表記)
– 変数の値
Netcdfファイル例
• 座標軸(水平軸)の定義例
dimensions:! !Latt = 442 ;! !Lont = 673 ;! variables:!!float Latt(Latt) ;!
!Latt:long_name = "latitude of TS-point" ;! !Latt:standard_name = "latitude" ;!
!Latt:units = "degree_north" ;! !Latt:axis = "Y" ;!
!float Lont(Lont) ;!
!Lont:long_name = "longitude of TS-point" ;! !Lont:standard_name = "longitude" ;!
!Lont:units = "degree_east" ;! !Lont:axis = "X" ;!
Netcdfファイル例
• 座標軸(鉛直軸)の定義例
dimensions:!
!depth = 54 ;! variables:!
!float depth(depth) ;!
!depth:long_name = "depth of model levels" ;! !depth:standard_name = "depth" ;!
!depth:units = "m" ;! !depth:axis = "Z" ;!
Netcdfファイル例
• 座標軸(時間軸)の定義例
dimensions:! !time = 1 ;! variables:!
!float time(time) ;!
!time:long_name = "days since reference date" ;! !time:standard_name = "time" ;!
!time:units = "day since 1970-01-01" ;! !time:axis = "T" ;!
units の書式)
[unit] since [yyyy]-‐[(m)m]-‐[(d)d] ([(h)h]:[(m)m]:[s]) (+/-‐[hh](:[mm])) 例)
seconds since 1992-‐10-‐8 15:15:42.5 -‐6:00 days since 1990-‐1-‐1 0:0:0
Netcdfファイル例
• 変数の定義例
variables:!
!float U(time, depth, Latu, Lonu) ;! !U:long_name = "zonal velocity" ;!
!U:standard_name = "eastward_sea_water_velocity" ;! !U:units = "m s-1" ;!
!U:_FillValue = -9.99e+33f ;! !U:scale_factor = 0.01f ;!
scale_factor, add_factorを使って指定の単位系に変換する SI単位系に揃える例)
出力: [cm s-‐1] ⇒ scale_factor = 0.001 ⇒ [m] 出力: [degreeC] ⇒ add_offset = 273.15 ⇒ [K]
Netcdfファイル例
•
Global aWributes
// global attributes:!
:Conventions = "CF-1.6" ;!
:title = "MOVE RA2014 daily-mean" ;!
:source = "Ocean 3D-Var reanalysis Ver. 2014 by MOVE-MRI.COM processed by ncmake_CF16 Ver. 1.0" ;!
DIAS連携
•
GrADS (ctl)とnetCDFの比較(座標軸)
// netCDF! netcdf MOVE-RA2014_200603310000 {! dimensions:! Latt = 442 ;! Latu = 442 ;! Lont = 673 ;! Lonu = 673 ;! depth = 54 ;! time = 1 ;! variables:! float Latt(Latt) ;!!Latt:long_name = "latitude of TS-point" ;! !Latt:standard_name = "latitude" ;! !Latt:units = "degree_north" ;! !Latt:axis = "Y" ;! float Latu(Latu) ;! !・・・! float Lont(Lont) ;! ・・・! float time(time) ;!
!time:long_name = "days since reference date" ;! time:standard_name = "time" ;!
!time:units = "day since 1980-01-01" ;! !time:axis = "T" ;!
// GrADS!
XDEF 673 LEVELS 116.800 116.900 117.000 ・・・!
YDEF 442 LEVELS 14.800 14.900 15.000 ・・・!
ZDEF 54 LEVELS 0.50 1.50 4.00 7.00 ・・・!
TDEF 12054 LINEAR 01Jan1980 1dy!
• コントロールファイルは1ファイルの中で 複数の同じ向きの軸を定義できない • 水平座標はコントロールファイルでは緯 度・経度を仮定している (PDEFでそれ以 外も指定可能?) • 鉛直座標の単位はコントロールファイル では明示されない
DIAS連携
•
GrADS (ctl)とnetCDFの比較(変数)
// netCDF!
netcdf MOVE-RA2014_200603310000 {! variables:!
float U(time, depth, Latu, Lonu) ;! !U:long_name = "zonzal velocity" ;!
!U:standard_name = "eastward_sea_water_velocity" ;! !U:units = "m s-1" ;!
!U:_FillValue = -9.99e+33f ;! !U:scale_factor = 0.01f ;! // GrADS! UNDEF 0! VARS 2! u 54 99 zonal velocuty (cm/s)! v 54 99 meridional velocity (cm/s)! ENDVARS!