R 将投影光栅转换为csv,保持其原始栅格形式
我必须将一些投影光栅(具有ndvi值)转换为csv或excel文件。我想保持网格形式,第一行作为metric lon值,第一列作为metric lat值。在交叉点处应存在ndvi值 我通常使用'as.data.frame(光栅,xy=T)'将值导出为数据帧,但在这种情况下,我将获得一种值矩阵R 将投影光栅转换为csv,保持其原始栅格形式,r,raster,r-raster,R,Raster,R Raster,我必须将一些投影光栅(具有ndvi值)转换为csv或excel文件。我想保持网格形式,第一行作为metric lon值,第一列作为metric lat值。在交叉点处应存在ndvi值 我通常使用'as.data.frame(光栅,xy=T)'将值导出为数据帧,但在这种情况下,我将获得一种值矩阵 library(raster) r <- raster(ncol=10, nrow=10) ncell(r) values(r) <- 1:ncell(r) plot(r) df <-
library(raster)
r <- raster(ncol=10, nrow=10)
ncell(r)
values(r) <- 1:ncell(r)
plot(r)
df <- as.data.frame(r, xy=T)
head(df)
x y layer
1 -162 81 1
2 -126 81 2
3 -90 81 3
4 -54 81 4
5 -18 81 5
6 18 81 6
然后,write.csv…我发现一个解决方案从'as.data.frame'传递到'dcast'
df <- as.data.frame(raster, xy=T)
d1 <- dcast(df, y~x, value.var = "layer")
d2 <- d1 %>% arrange(-y)
df如果我们需要tidyverse方法
library(tidyerse)
df %>%
spread(x, layer) %>%
arrange(desc(y))
或使用base R
xtabs(layer ~ y + x, transform(df, y = factor(y,
levels = sort(unique(y), decreasing = TRUE))))
您可以使用as.matrix
进行此操作
library(raster)
r <- raster(ncol=10, nrow=10)
values(r) <- 1:ncell(r)
m <- as.matrix(r)
write.csv(m, "test.csv", row.names=F)
read.csv("test.csv")
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1 1 2 3 4 5 6 7 8 9 10
#2 11 12 13 14 15 16 17 18 19 20
#3 21 22 23 24 25 26 27 28 29 30
#4 31 32 33 34 35 36 37 38 39 40
#5 41 42 43 44 45 46 47 48 49 50
#6 51 52 53 54 55 56 57 58 59 60
#7 61 62 63 64 65 66 67 68 69 70
#8 71 72 73 74 75 76 77 78 79 80
#9 81 82 83 84 85 86 87 88 89 90
#10 91 92 93 94 95 96 97 98 99 100
库(光栅)
r不清楚输出。你希望头部(df)如何输出应该是一个数据框我的意思是那些值v1、v2、v3、V4好的,它们是原始光栅中的ndvi值
library(raster)
r <- raster(ncol=10, nrow=10)
values(r) <- 1:ncell(r)
m <- as.matrix(r)
write.csv(m, "test.csv", row.names=F)
read.csv("test.csv")
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1 1 2 3 4 5 6 7 8 9 10
#2 11 12 13 14 15 16 17 18 19 20
#3 21 22 23 24 25 26 27 28 29 30
#4 31 32 33 34 35 36 37 38 39 40
#5 41 42 43 44 45 46 47 48 49 50
#6 51 52 53 54 55 56 57 58 59 60
#7 61 62 63 64 65 66 67 68 69 70
#8 71 72 73 74 75 76 77 78 79 80
#9 81 82 83 84 85 86 87 88 89 90
#10 91 92 93 94 95 96 97 98 99 100
mm <- matrix(values(r), ncol=ncol(r), byrow=TRUE)