我几个小时后就陷入了剧本,我无法解决问题。这是我的目标:我有143个样方的大量坐标和高程数据集(在样方中包含40到50个观测值)。我想提取每个样方的平均斜率和方位。我知道如何从GIS的角度出发,我的脚本完全适用于整个情节。
我首先将数据集拆分为143个数据帧。然后我为每个quadrat运行一个循环,我总是得到相同的错误信息:“split [i,2:3]中的错误:维度数不正确”。问题当然来自于我编写循环的方式或者我使用“[]”“[[]]”的方式。
任何人都知道问题出在哪里? 非常感谢!
data = read.table("Coordinates_elevation.txt", sep = "\t")
quad = data[,1]
X = data[,2]
Y = data[,3]
Z = data[,4]
results = as.data.frame(matrix(nrow = length(split), ncol = 3))
row.names(results) = names(split)
colnames(results) <- c('Elevation', 'Slope', 'Aspect')
data = matrix(c(quad,X,Y,Z), ncol=4, byrow=FALSE)
data=as.data.frame(data)
e = extent(data[,2:3])
r=raster(e, ncol=33, nrow=6, crs = CRS("+init=epsg:31300"))
split = split(data, quad)
for (i in 1:length(split)){
x = rasterize(split[i,2:3], r, split[i,4], fun=mean)
slope_asp=terrain(x, opt=c('slope', 'aspect'), unit='degrees',neighbors=8)
slope = slope_asp$slope[[i]]
results[i,2] = slope
aspect=slope_asp$aspect[[i]]
results[i,3] = aspect
elevation = split[i,4]
results[i,1]=elevation
}
拆分[i,2:3]时出错:维数不正确
write.table(results, "results_slopeaspect.txt", sep = "\t")