R 使用纬度和高程而不是纬度和经度打印光栅

R 使用纬度和高程而不是纬度和经度打印光栅,r,coordinates,raster,coordinate-systems,R,Coordinates,Raster,Coordinate Systems,我正在使用R,我有一些问题要解决这个问题: 我有两个光栅(相同的区域、相同的分辨率、相同的范围、相同的crs): 光栅A:(纬度、经度、值_A) 光栅B:(纬度、经度、高程) 然后,我需要获得光栅a的一个绘图,作为海拔和纬度的函数(x=海拔,y=纬度,像素值=值_a) 此外,我可能需要聚合具有相同纬度和相同高程的像素,例如使用平均值函数 你对如何用R解决这个问题有什么建议吗 谢谢大家! 首先,我生成了一些示例数据,这些数据可能与您看到的类似。在将来的问题中包含这样的内容将很有帮助,这样答案将解决

我正在使用R,我有一些问题要解决这个问题: 我有两个光栅(相同的区域、相同的分辨率、相同的范围、相同的crs):

光栅A:(纬度、经度、值_A)

光栅B:(纬度、经度、高程)

然后,我需要获得光栅a的一个绘图,作为海拔和纬度的函数(x=海拔,y=纬度,像素值=值_a)

此外,我可能需要聚合具有相同纬度和相同高程的像素,例如使用平均值函数

你对如何用R解决这个问题有什么建议吗


谢谢大家!

首先,我生成了一些示例数据,这些数据可能与您看到的类似。在将来的问题中包含这样的内容将很有帮助,这样答案将解决您在特定数据集中可能遇到的任何问题

df.values <- data.frame(lat = seq(44, 45, 0.01),
                        long = seq(90, 91, 0.01),
                        value_A = round(rnorm(n = 101,
                                              mean = 10,
                                              sd = 5),
                                        0)
                        )

df.elevate <- data.frame(lat = seq(44, 45, 0.01),
                         long = seq(90, 91, 0.01),
                         elevation = round(rnorm(n = 101,
                                                 mean = 200,
                                                 sd = 50),
                                           0)
                         )
听起来您希望将这两个独立的数据集合并起来,以便可以一起操作和显示它们。由于这两个数据集都有在纬度和经度级别收集的值(高程和值_A),因此它们将成为连接变量。如果您是这种数据操作的新手,dplyr的文档非常有用:()

df.join%
总结(平均值=平均值(值=T))
使用此功能,您可以通过更改summary中的函数来更改所需的汇总统计信息。例如,您可能希望只获取最高值

df.smooth <- df.join %>%
    group_by(lat, elevation) %>%
    summarise(mean_A = max(value_A, na.rm = T))
df.smooth%
组别依据(纬度、高程)%>%
总结(平均值=最大值(数值=T))

如果您有任何其他问题,请对此答案进行评论。

您可以像这样设置示例数据

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)
库(光栅)

A要获得最佳答案,您需要提供一个最小的可重复示例(请参阅)。在
光栅
软件包中有许多示例,您可以在此处使用它们。请编辑您的问题。
library(dplyr)
df.join <- left_join(df.values, df.elevate, by = c("lat", "long"))
df.smooth <- df.join %>%
    group_by(lat, elevation) %>%
    summarise(mean_A = mean(value_A, na.rm = T))
df.smooth <- df.join %>%
    group_by(lat, elevation) %>%
    summarise(mean_A = max(value_A, na.rm = T))
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)