Qiu and Chen (2005)などでは、海面高度データのある等値線の位置を黒潮続流の位置とし、Decadal Variationの議論している。
等値線の位置を決めるのは、渦などの紛らわしい等値線があり、目でみていちいち確認しないで自動的に欲しい等値線の位置を決めるのは難しい。
ここでは、図作成ソフトmatplotlibのcontourルチーンから情報を取り出して、等値線の位置を決める工夫をする。
参考にしたのはstackoverflowの
- How can I get the (x,y) values of the line that is ploted by a contour plot (matplotlib)? http://stackoverflow.com/questions/1560424/how-can-i-get-the-x-y-values-of-the-line-that-is-ploted-by-a-contour-plot-mat
- matplotlib - extracting data from contour lines http://stackoverflow.com/questions/5666056/matplotlib-extracting-data-from-contour-lines
- Python: find contour lines from matplotlib.pyplot.contour() http://stackoverflow.com/questions/18304722/python-find-contour-lines-from-matplotlib-pyplot-contour/18309914#18309914
ipythonノートブックは
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/qt804lsufj4whyx/Kuroshio_extension_path.ipynb?dl=0
Step1 力学高度のデータをferretを使い、読み込み、図示する
データはAVISOの絶対力学高度の2009年1月21日のデータを用いる。データはAVISOからダウンロードしておく。
データの読み込みと図示には、前回紹介したferret magicを使う。
Qiu and Chen (2005)では東経141から153度のデータで議論しているので、その範囲だけ抜き出しておく。
等値線は、渦や蛇行のなどのため等値線が4つあるが、黒潮続流にあたる本来欲しい線(東西にのびる線)だけを取り出すのが課題である。
Step 2 Ferretからpythonにデータを読み込む
matlabの機能を使うために、ferretからpythonへとデータを読み込む。これもferret magicを用いる。データがちゃんと読めているかを確認もしておく。
Step 3 等値線の位置を求める
matlabのcontour routineの機能を使って、等値線の位置を求める。等値線の位置は4つ求まっている。
Step 4 等値線の位置情報から、もっとも長い等値線を選ぶ。
等値線の位置が数値的に求まったので、この中から、欲しいpathだけを選ぶ。最も長いpathが黒潮続流にあたる欲しいpathだと考えられる(渦などを避けるために、始点と終点がもっとも離れているpathという条件でも良いかもしれない。)。
まず、pathの長さを求める関数を作成する。
get_distance は2点間の距離を km で求める関数。
get_pathlength はget_distanceを用いてpath位置の情報の配列からpathの長さを求める関数。
上の4つのpathの長さを求め、path #2が最も長いことがわかる(約1432km)。
path #= 0 length= 415.785621835 km
path #= 1 length= 527.959783762 km
path #= 2 length= 1432.08536051 km
path #= 3 length= 563.215908518 km
これが、求めるpathである。
Reference:
Qiu, B., and S. Chen, 2005: Variability of the Kuroshio Extension Jet, Recirculation Gyre, and Mesoscale Eddies on Decadal Time Scales. Journal of Physical Oceanography, 35, 2090-2103. doi:10.1175/JPO2807.1
0 件のコメント:
コメントを投稿