SSTデータセット”OSTIA”をダウンロードする方法【Python/copernicusmarine】

Python

SSTのデータセット”OSTIA”をCopernicus Data MarineからPythonAPIでダウンロードする方法を解説する。

インストール

copernicusmarineはPyPIやAnacondaからインストールできる。

PyPI

pip installで導入する。

pip install copernicusmarine

バージョン等の情報は以下のサイトに記述がある。

Anaconda

Anaconda環境がない場合は導入し、仮想環境を作成する。

仮想環境を起動し、conda installで導入する。

conda install -c conda-forge copernicusmarine

バージョン情報などは以下のページを参考にされたい。

アカウント作成・ログイン

Copernicus Marine Serviceの上部バーの”REGISTER”からアカウントを作成する。

Pythonで、先ほどのアカウントを使ってログインする。

copernicusmarine.login(
    username="username",
    password="passward",
    force_overwrite=True
)

“username”, “password”は自分のアカウントのもので置き換える。

dataset_idの取得

ダウンロードに必要なdataset_idを取得する。

copernicusmarineにはデータセットの情報を表示するdescribeメソッドが用意されている。

OSTIAのdata accessのサイトでproduct_idが見えている。

これをヒントに、dataset_idを検索する。

copernicusmarine.describe(
   product_id="SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001",
)

実行すると、以下のような辞書likeな情報が標準出力される。

CopernicusMarineCatalogue(products=[CopernicusMarineProduct(title='Global Ocean OSTIA Sea Surface Temperature and Sea Ice Analysis', product_id='SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001', 
(中略)
datasets=[CopernicusMarineDataset(dataset_id='METOFFICE-GLO-SST-L4-NRT-OBS-SST-V2', dataset_name='Global SST & Sea Ice Analysis, L4 OSTIA, 0.05 deg daily (METOFFICE-GLO-SST-L4-NRT-OBS-SST-V2)', 
(後略)

Unixのgrepコマンドなどで、”dataset_id”を検索する。

OSTIAの場合は以下の通り。

METOFFICE-GLO-SST-L4-NRT-OBS-SST-V2

ダウンロード

getメソッドでダウンロードする。

copernicusmarine.get(
    dataset_id="METOFFICE-GLO-SST-L4-NRT-OBS-SST-V2",
    filter = "*20250201*",
    output_directory="./",
)

filterで、ダウンロードするファイル名を指定する。”*”などのワイルドカードも使用可能。

output_directoryで保存先のディレクトリを指定。

便利なオプション

getメソッドでよく使うオプションを示す。

copernicusmarine.get(
    username="username",
    password="passward",
    dataset_id="METOFFICE-GLO-SST-L4-NRT-OBS-SST-V2",
    filter = "*20250201*",
    output_directory="./",
    no_directories=True,
    disable_progress_bar=True,
)
  • username, passwardは、CopernicusMarineのアカウント情報。loginメソッドを使わず、getメソッドでログイン操作も兼ねる。
  • no_directoryは、ディレクト構造を自動で作らず、output_directory直下に直接配置
  • disable_progress_barでバッチモード。内部のtqdmを呼び出さない。

試しに描画

まずはxarrayで中身を確認する。

import xarray as xr

ds = xr.open_dataset("./20250201120000-UKMO-L4_GHRSST-SSTfnd-OSTIA-GLOB-v02.0-fv02.0.nc")
print(ds)

出力は以下の通り。

<xarray.Dataset> Size: 415MB
Dimensions:           (time: 1, lat: 3600, lon: 7200)
Coordinates:
  * time              (time) datetime64[ns] 8B 2025-02-01T12:00:00
  * lat               (lat) float32 14kB -89.97 -89.93 -89.88 ... 89.93 89.97
  * lon               (lon) float32 29kB -180.0 -179.9 -179.9 ... 179.9 180.0
Data variables:
    analysed_sst      (time, lat, lon) float32 104MB ...
    analysis_error    (time, lat, lon) float32 104MB ...
(後略)

matplotlibで描画してみる。

import matplotlib.pyplot as plt

plt.pcolormesh(
    ds["lon"],
    ds["lat"],
    ds["analysed_sst"].isel(time=0)
)
plt.colorbar()
plt.show()

出力は以下の通り。

コメント

タイトルとURLをコピーしました