从NetCDF中提取矩阵并将其转换为光栅 - 行的问题 - R

问题描述 投票:0回答:1

我有一个从NetCDF文件中获得的矩阵,我正试图将其转换为光栅。我知道该矩阵有一个WGS84投影。

我发现了一个问题,在下面的代码中得到了修正--纬度之间的间距。lat 在NetCDF中,因此在派生矩阵中也是如此。clim_ncdf 是不平等的。然而,光栅 EI_adj 在从矩阵转换后,并没有完全按照它应该的方式进行投影,所有的空间都向南移动。这个问题让我抓狂--有人知道如何解决吗?此处.

library(raster)
library(ncdf4)
library(lattice)

# Choose variable name
dname <- c("GI")

clim_ncdf <- nc_open("NetCDF_GI.nc")

lon <- ncvar_get(clim_ncdf,"Longitude")
head(lon)
lat <- ncvar_get(clim_ncdf,"Latitude")

# Latitudes have spacing of 0.5 except in two instances:
lat[55:60]
lat[58:59] # problematic ones
# Create a new latitude vector with equal spacing for corrected matrix
nlat <- seq(min(lat),max(lat),0.5)

EI1 <- ncvar_get(clim_ncdf,dname[1])
# This needs to be rotated
rotate <- function(x) t(apply(x, 2, rev))
EI <- rotate(rotate(rotate(EI1)))

# Now adjust EI for the problematic lats:
rows_m_reps <- rep(1,nrow(EI))
rows_m_reps[58] <- 2
rows_m_reps[59] <- 10

# Replicating corresponding rows so we can now have equal latitude distancing
EI_adj <- EI[rep(1:nrow(EI), rows_m_reps), ] 

EIr_adj <- raster(EI_adj,xmn=min(lon), xmx=max(lon),ymn=min(nlat),ymx=max(nlat),
                  crs = "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")
plot(EIr_adj)

# Add admin layer
library(rgdal)
world_admin <- readOGR("Countries_WGS84.shp")
plot(world_admin, add = TRUE)

enter image description here

r matrix raster netcdf
1个回答
2
投票

您的数据

library(ncdf4)
library(raster)
library(maptools)
data(wrld_simpl)

clim_ncdf <- nc_open("NetCDF_GI.nc")
lon <- ncvar_get(clim_ncdf,"Longitude")
lat <- ncvar_get(clim_ncdf,"Latitude")
v <- ncvar_get(clim_ncdf, "GI")

这些都是纬度。

lat2 <- seq(min(lat),max(lat),0.5)

创建一个RasterLayer和一个相应的矩阵,并使用 NAs

e <- extent(min(lon)-0.25, max(lon)+0.25, min(lat)-0.25, max(lat)+0.25)
r <- raster(nrow=length(lat2), ncol=length(lon), ext=e)
m <- matrix(NA, nrow=length(lat2), ncol=length(lon))

现在旋转并将数值分配到矩阵的正确行中。m

vv <- t(v[,ncol(v):1])
i <- rowFromY(r, rev(as.vector(lat)))
m[i,] <- vv

并将m分配给RasterLayer。

values(r) <- m
image(r)
lines(wrld_simpl)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.