【问题标题】:Convert a projected raster into a csv maintaining its original grid form将投影栅格转换为 csv,保持其原始网格形式
【发布时间】:2019-09-09 12:43:18
【问题描述】:

我必须将一些投影栅格(带有 ndvi 值)转换为 csv 或 excel 文件。我想保留网格形式,第一行作为公制 lon 值,第一列作为公制纬度值。路口应该有ndvi值。

我通常使用 'as.data.frame(raster, 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

我想要什么


  1   2   
1 v1  v2
2 v3  v4

然后,写.csv...

【问题讨论】:

  • 不清楚输出。你希望 head(df) 是怎样的
  • 输出应该是一个数据框
  • 我的意思是那些值 v1、v2、v3、v4
  • 好的,它们是原始栅格中存在的 ndvi 值

标签: r raster r-raster


【解决方案1】:

我找到了一个从 'as.data.frame' 到 'dcast' 的解决方案

df <- as.data.frame(raster, xy=T)
d1 <- dcast(df, y~x, value.var = "layer")
d2 <- d1 %>% arrange(-y)

不优雅,但有效。还有其他方法吗?

【讨论】:

    【解决方案2】:

    您可以为此使用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
    

    你也可以像这样创建矩阵

    mm <- matrix(values(r), ncol=ncol(r), byrow=TRUE)
    

    【讨论】:

      【解决方案3】:

      如果我们需要一个 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))))
      

      【讨论】:

        猜你喜欢
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 1970-01-01
        • 1970-01-01
        • 2021-08-23
        • 2014-04-25
        • 2019-08-14
        相关资源
        最近更新 更多