海鳥から得られた気圧(pressure)と温度(temperature)データを基に、飛行高度(flight_height)を推定するプログラムです。海鳥が定期的に海面近くに降りる特性を利用し、指定した時間範囲内の気圧データから海面気圧 (P0) ・海面気温(T0)を補正します。また、温度データがない場合、気圧データのみを使用して高度を推定します。
以下は国際標準大気モデル(ISA, International Standard Atmosphere)に基づき、気圧と気温を用いて飛行高度を計算する基本式です。
\[
P = P_0 \times \left(1 – \frac{L \cdot h}{T_0}\right)^{\frac{g \cdot M}{R \cdot L}}
\]
- P: ある高度での気圧 (Pa)
- P0: 海面での気圧 (Pa)
- L: 温度減率(標準値 0.0065 K/m)
- h: 高度 (m)
- T0: 海面上の温度(標準値 288.15 K)
- g: 重力加速度(標準値 9.80665 m/s)
- M: 空気のモル質量(標準値 0.0289644 kg/mol)
- R: 気体定数(標準値 8.31432 J/(mol\cdotpK))
上記の式から、標準大気条件下での定数 (44330) と指数 (0.1903) を算出し、気温データ (temperature ℃) の単位をケルビン (K) に変換して以下の式が求まります。
\[
flight\_height = 44330 \times \left(1 – \left(\frac{\text{pressure}}{\text{P0}}\right)^{0.1903}\right) \times \frac{\text{temperature+273.15}}{\text{T0+273.15}}
\]
以下のデータを含むCSVファイルおよびそれを可視化するための時系列グラフとヒストグラムを生成します。データポイント数 (P0n) の中央値が少ない場合は、記録間隔が長すぎるために海面気圧の推定に問題があることが予想されます。ポイント数が少ない結果などは除去して利用するなどの注意が必要になります。
- P0: 推定された海面気圧
- T0: 推定された海面温度(存在する場合)
- P0n: P0の計算に使用したデータポイント数
- flight_height: 推定された飛行高度
実行方法
使用するPython環境に必要なライブラリ(matplotlib)をインストールしてください。
pip install matplotlib
プログラム(estimate_flight_height.py)とデータ(data.csv)をダウンロードして、Pythonのプロンプト上でそれらを保存したディレクトリに移動して、以下のコマンドを実行します。
python estimate_flight_height.py
処理するファイル名(data)を入力し、海面気圧を推定する時間間隔(分)と海面付近の気圧を計算するパーセンタイル(%)を入力し、海面気圧 (P0) ・海面気温(T0)として補正に使用します。例えば、時間間隔:”60″、パーセンタイル:”99″と入力した場合、前後30分、計60分以内に計測された気圧の99パーセンタイルの値を海面気圧として推定します。これらの値が初期値となっていますが、対象種の飛翔時間と潜水時間に応じて適宜調整してください。例えば、1回あたりの飛行時間が短い海鳥では時間間隔を短く設定してくださ。また、潜水する海鳥の場合などは、水圧を計測することがあるため海面付近の気圧が計測できない場合があります。そのため、99パーセンタイルを初期値としています。潜水しない海鳥の場合は最大値(100)、より潜水する海鳥の場合は低い値を設定してください。
以下の値が表示されます。
- P0: 推定された海面気圧の中央値
- T0: 推定された海面温度の中央値(存在する場合)
- P0n: P0の計算に使用したデータポイント数の中央値
- flight_height: 推定された飛行高度の中央値
(base) C:\>Python estimate_flight_height.py 解析するCSVファイル名を入力してください(拡張子CSVを省略): data 気温データを元に補正した高度を計算します。 海面付近の気圧・気温を計算する時間範囲(分)(初期値:60): 海面付近の気圧を計算するパーセンタイル(%)(初期値:99): P0の中央値: 991.87 hPa P0nの中央値: 3601.00 T0の中央値: 22.70 °C flight_heightの中央値: 11.16 m
時系列図(pressur、temperature、flight_height)とヒストグラム(P0、P0n、T0、Flight_height)が表示され、同フォルダ内に画像ファイルが保存されます。