r - 用纬度和海拔而不是纬度和经度绘制栅格
问题描述
我正在使用 R 并且我有一些问题来解决这个问题:我有 2 个栅格(相同的区域、相同的分辨率、相同的范围、相同的 crs):
栅格 A:(纬度、经度、值_A)
class : RasterLayer
dimensions : 832, 541, 450112 (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333 (x, y)
extent : -122.2458, -117.7375, 35.0625, 41.99583 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs
names : values_A
values : -753.4842, 0 (min, max)
栅格 B:(纬度、经度、海拔)
class : RasterLayer
dimensions : 832, 541, 450112 (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333 (x, y)
extent : -122.2458, -117.7375, 35.0625, 41.99583 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs
names : dem
values : 40, 4176 (min, max)
然后,我需要获取作为高程和纬度函数的栅格 A 图(x= 高程,y= 纬度,像素值 = values_A)。
此外,我可能需要聚合具有相同纬度和相同海拔的像素,例如使用均值函数。
你对如何用 R 解决这个问题有什么建议吗?
谢谢!
解决方案
您可以像这样设置示例数据
library(raster)
A <- B <- raster(nrow=83, ncol=54, ext=extent(-122.2458, -117.7375, 35.0625, 41.99583))
values(A) <- rep(1:nrow(A), ncol(A))
values(B) <- 1:ncell(B)
这是一个解决方案
x <- cbind(elevation=values(B), latitude=yFromRow(B, 1:nrow(B)), values(A))
r <- rasterFromXYZ(x)
或者使用一些现有数据
B <- getData("alt", country='CHE')
A <- init(B, "y")
x <- na.omit(cbind(elevation=values(B), latitude=yFromRow(B, 1:nrow(B)), A=values(A)))
你可能想做一些四舍五入
x[,1] <- round(x[,1], -2)
x[,2] <- round(x[,2], 1)
r <- rasterFromXYZ(x)
plot(r, asp=NA)
推荐阅读
- io - java.io.FileNotFoundException: src/config.properties (没有这样的文件或目录)
- python - 当我使用 sklearn DecisionTreeClassifier 时,返回的树不尊重我给定的参数
- sql - 如何在SQL中找到两列的运行总和
- laravel - laravel 中的路由
- python - VSCode,尽管在我的python shell中安装了所述模块,但仍然遇到模块错误
- java - 如何找到 4、5 和 6 的前 5 个倍数并将它们添加到 ArrayList?
- postgresql - 使用 Knex 进行超测
- powershell - 使用带有格式化文本的 Powershell mailto 发送电子邮件
- git - Git 将私有分支重新设置为最新的主分支
- javascript - 如何以通用时间格式存储小时和分钟?