将矩阵中的极地立体纬度经度数据添加到栅格中

时间:2018-08-09 20:28:52

标签: r gis geospatial raster

我想从netcdf4文件的阿拉斯加上的一个区域中子集化,该文件处于极地立体投影(ESRI:102018)投影中。 netcdf为每个变量(例如温度或降水量)提供了720 x 720矩阵,并提供了纬度和经度的“ XLAT”和“ XLONG”。我需要子集数据以实际包括每个网格点的纬度/经度,并且对于它来说,要上传的文件很大,因此在此处下载示例的链接是: https://rda.ucar.edu/data/ds631.1/asr15.fcst3.monthly/asr15km.fct.2D.200006.mon.nc 我尝试执行以下操作以获取所需信息,但实际上我的问题是然后使用该区域并获得适当的经度/纬度。我的目标是将其重新投影到EPSG 3857或类似的经/纬样式投影中。

library(raster)
library(ncdf4)
# load netcdf4
nc_file <- nc_open("nc_list/asr15km.fct.2D.200007.mon.nc")
# variable of interest
RAINC <- ncvar_get(nc_file, "RAINC") # Cumulus precip
XLAT <- ncvar_get(nc_file, "XLAT")
XLONG <- ncvar_get(nc_file, "XLONG")

在这里,我当时在考虑使用栅格来处理此问题,但极坐标学坐标似乎不太有效。我不确定如何正确设置栅格范围!

nc_file$dim$y$vals -> lon
nc_file$dim$x$vals -> lat

prcp <- raster(RAINC)
# EPSG doesn't recognize the esri code.
crs(prcp) <- crs('+init=esri:102018')
extent(prcp) <- extent(min(lat), max(lat), min(lon), max(lon))

这里的范围是1到720和1到720,这不是我想要的(但我正在设置此值)。您可以在下图中看到它。

enter image description here

# Area we want to remove
yukon_ind <-((XLAT >= 62) & (XLAT <= 64) & (XLONG >= -165) & (XLONG <= -163)) 
cropping_rast <- raster(yukon_ind, crs = crs('+init=esri:102018'))
# Pic

extent(cropping_rast) = extent(min(lat), max(lat), min(lon), max(lon))
prcp_c <- mask(prcp, cropping_rast, maskvalue = 0)

enter image description here

如何从该区域退回所需区域并重新投影?

0 个答案:

没有答案