如何将气候研究单位(CRU)CDF投射到R的极地视图中?
包 cruts 及其功能 cruts2raster()可以很好地获取时间序列数据,我可以使用栅格可视化一个月的数据(或更多) 包和 plot()或 image()函数。在引入所有数据并检查RasterStack之后,它会绘制并在查询时给出坐标参考系统,但我无法将其转换为极坐标投影。
我使用 rgdal (已将最新的proj.4安装到我的Mac的/ usr / local / lib / pkgconfig中)但似乎无法投射到此极坐标视图中:
library(cruts)
library(raster)
## Bring the downloaded file into R
r <- cruts2raster("cru_ts3.24.2011.2015.pre.dat.nc",
timeRange=c("2011-01-01","2015-01-01"))
## get the first layer
r1 <- r[[1]]
## admire its colors (beautiful!)
plot(r1)
# check its coordinate reference system and projection
r1
# gives this
# coord. ref. : +init=epsg:4326
# . +proj=longlat
# . +datum=WGS84
# . +no_defs
# . +ellps=WGS84 +towgs84=0,0,0
## define the stereo polar projection to make it really gorgeous
newproj <- "+proj=stere
+lat_0=90
+lat_ts=70
+lon_0=-45 +datum=WGS84"
## try to project
x <- projectRaster(r1,crs=newproj)
# and FAIL
“if(value [1]!= nrow(x)| value [2]!= ncol(x)){的错误{:
缺少需要TRUE / FALSE的值
另外:警告信息:
在dim<-
(*tmp*
中,value = c(nr,nc)):
通过强制将NA引入整数范围“
我一直无法弄清楚“缺失值”。
在 projectRaster()的文档中有这样的说法:“当将预测的极地数据转换为(例如)经度/纬度时,projectExtent不能很好地工作。使用这些数据你可能需要调整返回的对象。例如,做ymax(对象)&lt; - 90“,但我不知道如何实现他们的建议。
答案 0 :(得分:1)
这解决了我的问题:
r1e&lt; - extent(-180,180,60,90)
r1c&lt; - crop(r1,r1e)
积(R,C)
x&lt; - projectRaster(r1c,crs = newproj)
积(x)的