R 将投影光栅转换为csv,保持其原始栅格形式

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 <-

我必须将一些投影光栅(具有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 <- 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)