Подстановка Lat/Lon из растрового файла

#r #raster

Вопрос:

Я новичок в r и нуждаюсь в некоторой помощи для задания заданной области из растрового кирпича с 6 различными временными рамками модели набухания. Я пробовал обрезать() и маскировать (), но безуспешно. Пожалуйста, ознакомьтесь с моим кодом ниже для загрузки данных, создания интересующей области и попытки использования crop. Я также попробовал другой метод волны Любая помощь будет очень признательна.

 url <- "http://thredds.cdip.ucsd.edu/thredds/fileServer/cdip/model/MOP_grids/CA_0.01_nowcast.nc"

options(timeout = 1000)

data <- download.file(url, "/Users/mycomp/Desktop/wave_data.nc")

data_set <- "wave_data.nc"

waves <- brick(data_set, sub = "waveHs")

ROI <- st_polygon(list(rbind(c(-121.0062, 33.10625), c(-121.0062, 34.90625), 
                  c(-118.7438, 34.90625), c(-118.7438, 33.10625), c(-121.0062, 33.10625))))

ROI <- st_sfc(ROI, crs = 4326)

t_1 <- subset(waves, 1:1)
crs(t_1) <- 4326

t_1 <- crop(t_1, ROI)
 

Ответ №1:

Это лучше сочетается с terra пакетом

 url <- "http://thredds.cdip.ucsd.edu/thredds/fileServer/cdip/model/MOP_grids/CA_0.01_nowcast.nc"    
options(timeout = 1000)
data_set <- "wave_data.nc"
if (!file.exists(data_set)) download.file(url, data_set, mode="wb")

library(terra)
waves <- rast(data_set, sub = "waveHs")
ROU <- ext(-121.0062, -118.7438, 33.10625, 34.90625)
x <- crop(waves, ROU)


waves
#class       : SpatRaster 
#dimensions  : 1000, 800, 6  (nrow, ncol, nlyr)
#resolution  : 0.009999997, 0.009999998  (x, y)
#extent      : -124.995, -116.995, 31.995, 41.995  (xmin, xmax, ymin, ymax)
#coord. ref. :  proj=longlat  ellps=WGS84  no_defs 
#source      : wave_data.nc:waveHs 
#varname     : waveHs (significant wave height) 
#names       : waveH~24800, waveH~28400, waveH~32000, waveH~35600, waveH~39200, waveH~42800 
#unit        :       meter,       meter,       meter,       meter,       meter,       meter 

x
#class       : SpatRaster 
#dimensions  : 180, 226, 6  (nrow, ncol, nlyr)
#resolution  : 0.009999997, 0.009999998  (x, y)
#extent      : -121.005, -118.745, 33.105, 34.905  (xmin, xmax, ymin, ymax)
#coord. ref. :  proj=longlat  ellps=WGS84  no_defs 
#source      : memory 
#names       : waveH~24800, waveH~28400, waveH~32000, waveH~35600, waveH~39200, waveH~42800 
#min values  :  0.04026191,  0.04014703,  0.04019210,  0.03900384,  0.03891155,  0.03870345 
#max values  :    1.974934,    1.948596,    1.862421,    1.782451,    1.709235,    1.692052  
 

Комментарии:

1. Огромное спасибо. Случайно, вы не могли бы объяснить, почему мой код не работал? Похоже, мы сделали то же самое, но с разными пакетами?

2. Я не исследовал, но из предупреждающих сообщений, которые raster выдает, кажется, что он не совсем понимает этот особый вкус файла ncdf.