【发布时间】:2016-11-01 09:52:51
【问题描述】:
我有美国 N 沉积的数据,可以在压缩目录中的 .tif 文件中找到,可以在此处访问:nadp.sws.uiuc.edu/maplib/grids/2006/TotalN_dep_2006.zip。
我使用 raster 包将数据加载到 R 中:
require(raster)
r <- raster('/path/to/dep_totalN_2006.tif')
然后我有一些坐标,我想从栅格中提取值。以下是 6 个测试站点,采用 dput 格式:
test.dat <- structure(list(latitude = c(46.414597, 46.137664, 42.258794,
44.287538, 46.567187, 46.205438), longitude = c(-86.030373, -85.990492,
-85.847991, -85.806588, -87.954285, -87.481934)), .Names = c("latitude",
"longitude"), class = "data.frame", row.names = c(NA, 6L))
> test.dat
latitude longitude
1 46.41460 -86.03037
2 46.13766 -85.99049
3 42.25879 -85.84799
4 44.28754 -85.80659
5 46.56719 -87.95428
6 46.20544 -87.48193
通常,从现在开始,提取数据非常简单。我会使用这样的方法从图层中获取这些点的数据:
points <- cbind(test.dat$longitude,test.dat$latitude)
test.dat$out <- extract(r, points)
但这不起作用。它不会出错,它只会产生一个 NA 值的向量。我可以绘制栅格图层,这为出了什么问题提供了线索:
plot(r)
显然栅格图层的 x/y 坐标不在纬度/经度中,我希望这就是为什么我的 extract 命令无法从图层中提取任何数据以获取我的点列表的原因。抱歉,如果这是非常基本的并且已在其他地方得到回答,但我的搜索并没有产生一个清晰的简单答案。我对 R 很有经验,但对我在 R 中使用空间数据非常了解。如何准确投影栅格文件 r,以便我对 extract 的调用为 test.dat 中的站点生成适当的值基于他们的纬度/经度?
【问题讨论】:
-
您的栅格位于投影坐标系中。您需要让您的点和栅格都使用相同的坐标系。假设您的 lat,long 在 wgs84 地理坐标中,那么最简单的方法是将栅格重新投影到 wgs84
-
@dww 他们都是 wgs84。如何将栅格重新投影到 wgs84?
-
r.proj = projectRaster(r, crs=crs('+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')) -
试试 projectRaster (r, crs = CRS("+proj=longlat +datum=WGS84"))。为此,您需要 raster 和 sp 库
-
还阅读了投影和地理坐标系之间的区别。