R/leaflet으로 파랑 모델의 파고를 시각화

7954 단어 Rwgrib2leafletcdoGEFS
GEFS 데이터 다운로드, wgrib2 에서 netcdf로 변환.
wget https://nomads.ncep.noaa.gov/pub/data/nccf/com/gens/prod/gefs.20210401/06/wave/gridded/gefs.wave.t06z.c00.global.0p25.f003.grib2
wgrib2 gefs.wave.t06z.c00.global.0p25.f003.grib2 -netcdf tmp.nc

leaflet으로 시각화.
library(raster)
library(leaflet)

r <- raster(x = "tmp.nc", varname = "HTSGW_surface")
leaflet() %>%
  addTiles() %>%
  addRasterImage(r, opacity = 0.5) %>%
  setView(lng = 0, lat = 0, zoom = 2)



lat&lng의 최소 최대값 확인.
library(ncdf4)

nc <- nc_open(filename = "tmp.nc")
lat <- ncvar_get(nc = nc, varid = "latitude")
range(lat)
#[1] -90  90
lng <- ncvar_get(nc = nc, varid = "longitude")
range(lng)
#[1]   0.00 359.75
tmp <- ifelse(lng > 180, -360 + lng, lng)
range(tmp)
#[1] -180.00  179.75

leaflet으로 시각화할 때는 lng이 0~359.75도라면 180도 이상을 표시할 수 없다(같다).

그래서 cdo 로 0~359.75도를 -180~179.75도로 변환.
cdo sellonlatbox,-180,179.75,-90,90 tmp.nc gefs.wave.t06z.c00.global.0p25.f003.nc

다시 시각화.
library(raster)
library(leaflet)

r <- raster(x = "gefs.wave.t06z.c00.global.0p25.f003.nc", varname = "HTSGW_surface")
leaflet() %>%
  addTiles() %>%
  addRasterImage(r, opacity = 0.5) %>%
  setView(lng = 0, lat = 0, zoom = 2)



, , , 180도의 데이터가 없기 때문에 틈이 있지만, , , 보간하지 않으면 안 된다고 생각하지만, , , 뭐 좋다. . .

좋은 웹페이지 즐겨찾기