はじめに
本記事では,Rを使って海面水温データOSTIAをダウンロードする方法を解説します.
ご注意:データをダウンロードする際は,対象サイトの規約等をご確認の上,サーバーに過剰な負荷をかけないように心がけましょう.
OSTIA
OSITA(the Operational Sea Surface Temperature and Sea Ice Analysis)は,英国気象庁が開発している全球規模の海面水温データです.同データは国内外の研究開発に利用されており,最近では風況マップ作成時における気象モデルの入力値としても採用されています.
- NeoWins(洋上風況マップ)
- [New European Wind Atlas] (https://map.neweuropeanwindatlas.eu/about)
OSTIAの概要を下表に示します.OSTIAの水平解像度は約5km(0.054°×0.054°),時間解像度は1日です.
データ | 範囲 | 配信期間 | 解像度 | データソース | ファイル形式 |
---|---|---|---|---|---|
OSTIA | 全球 | 2006年〜 | 0.054°×0.054°,1日毎 | 人工衛星(AVH PF, AVH, AATSR, TMI) 及び現場水温 | NetCDF |
手順
ユーザ登録
OSTIAはNASAのPO.DAACでNetCDF形式のファイルで配信されています.まずはEarthdata Loginでユーザー登録をした後,PO.DAAC DriveでDrive API Password
を入手します.
ダウンロード
Rのcurl
パッケージを利用して,1日毎に収録されているファイルYYYYMMDD-UKMO-L4HRfnd-GLOB-v01-fv02-OSTIA.nc.bz2
をダウンロードします.ダウンロードする際には,上記で登録したUsername
とDrive API Password
が必要となります.
# setting -------------------------------------------------------------------------------------
library(tidyverse)
library(lubridate)
library(curl)
odir <- "." # output directory
sdate <- "2019-01-01" # start date
edate <- "2019-01-01" # end date
Username <- "XXXXXXX" # Username
Password <- "YYYYYYY" # Drive API Password
# function ----------------------------------------------------------------
curl_ostia <- function(url, destfile, h){
message(str_c(" downloading: ", basename(destfile)))
curl_download(url = url, destfile = destfile, handle = h)
}
# main --------------------------------------------------------------------
ostia_url <- "https://podaac-tools.jpl.nasa.gov/drive/files/allData/ghrsst/noaa/L4/GLOB/UKMO/OSTIA"
ostia_handle <- new_handle()
handle_setopt(handle = ostia_handle, httpauth = 1, userpwd = str_c(Username, Password, sep = ":"))
ostia_tbl <-
tibble(cdate = seq(from = as_date(sdate), to = as_date(edate), by = "1 day")) %>%
mutate(
n = yday(x = cdate) %>% formatC(x = ., width = 3, flag = "0"),
year = year(x = cdate),
file = format(x = cdate, "%Y%m%d-UKMO-L4HRfnd-GLOB-v01-fv02-OSTIA.nc.bz2"),
ifile = str_c(ostia_url, year, n, file, sep = "/"),
ofile = str_c(odir, "/", basename(path = ifile))
)
pwalk(
.l = list(url = ostia_tbl$ifile, destfile = ostia_tbl$ofile, h = list(ostia_handle)),
.f = curl_ostia
)
> source('download_ostia.R')
downloading: 20190101-UKMO-L4HRfnd-GLOB-v01-fv02-OSTIA.nc.bz2