【发布时间】:2026-02-18 20:10:01
【问题描述】:
我一直在绘制一个 NetCDF 文件并覆盖一个形状文件。然而,这是一个全球性的形象,我只想要其中的一部分,即只有墨西哥。 我使用This tutorial 来绘制所有内容并且效果很好。但是我应该在哪个部分裁剪地图。 这是我的代码:
require(utils)
require(colorRamps)
require(RNetCDF)
require(rasterVis)
require(rgdal)
Datos <- open.nc("./ERAII_viento_2014_300.nc")
u <- var.get.nc(Datos, "u")
v <- var.get.nc(Datos, "v")
lon <- var.get.nc(Datos, "longitude")
lat <-- var.get.nc(Datos, "latitude")
u[u == -32767] <- NA
v[v == -32767] <- NA
u9 <- raster(t(u[ , ,9])[ncol(u):1, ])
v9 <- raster(t(v[ , ,9])[ncol(v):1, ])
y <- brick(u9,v9)
projection(y) <- CRS("+init=epsg:4326")
extent(y) <- c(min(lon), max(lon), min(lat), max(lat))
slope <- sqrt(y[[1]]^2 + y[[2]]^2)
aspect <- atan2(y[[1]], y[[2]])
cntry <- readOGR(dsn="./shape_countries", layer="country")
we <- crop(y, extent(c(0, (180* res(y)[1]), min(lat), max(lat))))
ww <- crop(y, extent(c((180 * res(y)[1]), 360 * res(y)[1], min(lat), max(lat))))
extent(ww) <- c(-180 * res(y)[1], 0, min(lat), max(lat))
#extent(ww) #-180.50:0 y -90:90
#extent(we) #0:180.5 y -90:90
y2 <- merge(ww,we)
slope2 <- sqrt(y2[[1]]^2 + y2[[2]]^2)
vectorplot(y2 * 1.5, isField = "dXY", region = slope2, margin = FALSE, par.settings = rasterTheme(region = matlab.like(n = 10)),narrows = 10000, at = -15:50) + layer(sp.polygons(cntry))
我从http://apps.ecmwf.int/datasets/data/interim-full-daily/levtype=sfc/ 下载了风数据注意:我使用nco.exe 将变量u 和v 从“short”转换为“float”。 我不记得我从哪里得到 shapefile,但我认为它来自 ArcGIS。
【问题讨论】: