session_grid(NULL)
pixelsize()
## internet connection is required; access was tested on 2018-06-04
invisible({
dpath <- file.path("ftp://sidads.colorado.edu/pub/DATASETS"
,"nsidc0081_nrt_nasateam_seaice/north")
dst <- tempfile(fileext=".bin")
isOK <- FALSE
d3 <- Sys.Date()
for (i in seq(5)) {
src <- file.path(dpath,format(d3,"nt_%Y%m%d_f18_nrt_n.bin"))
a <- try(download.file(src,dst,mode="wb"))
if ((is.integer(a))&&(a==0)) {
isOK <- TRUE
break
}
d3 <- d3-1
}
if (isOK) {
g1 <- regrid(bbox=c(-385,-535,375,585)*1e4,res=25*1e3
,crs=paste("+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45"
,"+k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449"
,"+units=m +no_defs"))
session_grid(g1)
b <- readBin(dst,integer(),size=1L,n=136492L,signed=FALSE)
ice <- ursa_new(value=tail(b,-300))
ice[ice>251] <- NA ## keep Pole
ice[ice==251] <- 250 ## consider 100% ice at Pole
ice <- ice/2.5 ## uncategorize
ice[ice<15] <- 0 ## not ice, if less 15%
ice[ice>0] <- 100
extent1 <- band_sum(ice*1e-2*ursa(ice,"cell")^2*1e-6)*1e-6
extent2 <- band_sum(ice*1e-2*pixelsize(ice))*1e-6
message(paste("Near real-time Arctic sea ice extent (NASA Team algorithm, NSIDC)"))
message(sprintf(" Direct area calculation: %5.2f*1e6 km^2.",extent1))
message(sprintf(" Distortion in area is corrected: %5.2f*1e6 km^2.",extent2))
}
else
message("It is failed to get sea ice concentration data.")
})
Run the code above in your browser using DataLab