繁体   English   中英

在 R 中使用包栅格从 NetCDF 文件中提取数据并找到正确的投影

[英]Extracting data from a NetCDF file with package raster in R and finding the proper projection

在这里下载了一个 NetCDF 文件并通过以下方式阅读:

library(raster)
b <- brick("precipitationintensity14rcp45modelsensemblemedianannual.nc")

然后我检查了proj4string以查看投影以及如何提供坐标:

> proj4string(b)
[1] "+proj=lcc +lat_0=47.5 +lon_0=13.3299999237061 +lat_1=49 +lat_2=46 +x_0=400000 +y_0=400000 +datum=WGS84 +units=m +no_defs"

为了在某​​个点提取数据,我使用 WGS84 格式的 long/lat 坐标:

coords<-data.frame(lon=47.4, lat=11.5)
coordinates(coords)<-c("lon","lat")

然后我尝试通过以下方式提取数据:

> extract(b$X1981.07.15,coords)
     [,1]
[1,]   NA

这让我莫名其妙地感到困惑。 因为我期望在这个给定点有一个值。

为了调试我的代码,我尝试将光栅对象的坐标与我的坐标进行比较:

> coordinates(b$X1981.07.15)
               x      y
     [1,] 111500 571500
     [2,] 112500 571500
     [3,] 113500 571500

现在我很困惑,因为提供的坐标与proj4string格式(WGES84)不匹配。 你能帮我吗:

  1. 为提取数据提供适当的坐标
  2. 向我解释为什么栅格对象中的坐标不像我预期的那样

您需要将点转换为栅格的坐标参考系(而不是相反!)。 下面我将展示如何使用“terra”来替换“raster”包。

library(terra)
b <- rast("precipitationintensity14rcp45modelsensemblemedianannual.nc")

coords <- data.frame(lon=47.4, lat=11.5)
pts <- vect(coords, crs="+proj=longlat")

#crs(b) = "+proj=lcc +lat_0=47.5 +lon_0=13.3299999237061 ...
lccpts <- project(pts, crs(b))

extract(b$X1981.07.15, lccpts)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM