海洋シミュレーションデータを活用した 水産アプリケーションの開発基盤 石川洋一 海洋研究開発機構 地球情報基盤センター 協力 :OpenDAP 勉強会 by 京大小山田研 吉川研 東大喜連川研 柴崎研
内容 漁場推定モデル開発支援ツール RECCA アカイカ課題で開発された漁場推定モデルの概略 他海域 他魚種への適用のための漁場推定モデルの開発支援 ツールの開発から学んだこと データベースの構築 メタデータの重要性
目的 RECCA アカイカ課題で開発された漁場推定モデルを他海域 他魚種へ適用するためのツールを DIAS 上で開発する ツール開発を通じて 他のアプリケーションでも利用可能な開発基盤を DIAS 上で整備する
漁場推定モデル RECCA では三陸沖と中央太平洋のアカイカを対象に開発モデルコンセプトは他魚種へも適用可能海洋環境データと対象魚種の漁獲データ は標本船の操業位置
HSI モデル作成支援可視化ツール 概要 Webアプリケーション データベース連携 サーバ選択 対話操作 環境変数の選別 SI 曲線の作成 HSI 分布図の作成
漁場探索モデル作成支援環境 システム概要 メインビュー 操作タブ
漁場探索モデル作成支援環境 メインビュー 環境変数 SI 値 HSI 値の分布
漁場探索モデル作成支援環境 操作タブ データ選択 SI 曲線作成 HSI 分布作成
HSI モデル作成支援可視化ツール システム構成 App. サーバ アプリケーション (1) Web サーバ (Apache) (2) ファイルシステム (HTML, CSS, JS) Web ブラウザ WebGL 対応ブラウザ ネットワーク ユーザ端末 DB サーバ データベース (1) Web サーバ (Apache) (2) Servlet コンテナ (Tomcat) GDS (OPeNDAP) (3) ファイルシステム GrADS ユーザ
HSI モデル作成支援可視化ツール 漁獲データ :Closed data 高いセキュリティが必要 ローカルなデータとして扱う 海洋環境データ :Open data 大規模データで多様な目的に利用可能 DIAS 上でアーカイブ 必要な変数 領域のみ使いたい データベースの検討
データベースの必要性 ファイル単位でのデータ取得の問題点 ファイル単位? 1 変数 1 時刻 1 時刻多変数 1 変数時系列 etc.. アクセス方法をデータセット毎に実装する必要 必要のない領域 変数までダウンロード
データベースミドルウェアの検討 OPeNDAP SciDB 導入実績京大生存圏, NASA, NOAA LSST, PNNL バックエンドファイルシステム関係データベース 動作環境 Linux 等 Linux スケーラビリティ 任意のファイルシステム 独自 データ取得方法プロトコル DAP, HTTP 内蔵分析機能 拡張性 Handler によって対応ファイル形式を追加 ODBC オープンソース LGPL AGPL( 有償プラグインあり ) クライアント言語ソフトウェア C++, Java, Python, JavaScript, Matlab, GrADS など Python, R など
データベースミドルウェアの検討 OPeNDAP 概要 HTTPベースのデータ転送プロトコル データにはURIが付与 複数のサーバおよびクライアント実装が存在 対応データ形式はサーバ実装に依存 Webサーバ ファイルシステムで権限管理可能
データベースミドルウェアの検討 OpenDAP の利用例 hwp://xxx/yyy/ocean.dods?s[0][0][202:282][242:302] URLを指定してHTTP 通信 クエリ構文 [i] 添字で指定のデータを取得 [start:stop] 添字で指定範囲のデータを取得 [start:step:stop] 添字で指定範囲のデータを一定間隔で取得 セキュリティ Web サーバ Servlet コンテナの認証が利用可能
メタデータの重要性 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" ;!!depth:positive = "down" ;!
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 の比較 ( 座標軸 ) // 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 でそれ以外も指定可能?) 鉛直座標の単位はコントロールファイルでは明示されない // 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" ;!
DIAS 連携 GrADS (ctl) と netcdf の比較 ( 変数 ) // GrADS! UNDEF 0! VARS 2! u 54 99 zonal velocuty (cm/s)! v 54 99 meridional velocity (cm/s)! ENDVARS! // 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 ;!
まとめと今後の課題 漁場推定モデル作成支援のツール DIAS 上の海洋環境データセットを利用 必要なデータのみ使うために OpenDAP を活用 シミュレーションデータの利用について データセットのメタデータに加え 変数についての詳しいメタデータも必要 変数名について 同じ変数には同じ名前がついていて欲しいが 違う名前で同じ変数は対応可能だが 同じ名前で違う変数は困る DIAS 標準規格があると利用しやすい Netcdf と CfConven_on など広く流通しているものに準拠 & 拡張 データセットのメンテナンスやアフターケアの労力削減 データセット作成者の手間は増える