【问题标题】:Raster to table using r使用 r 栅格到表
【发布时间】:2014-08-24 23:33:29
【问题描述】:

我想使用命令head 将栅格转换为 R 中的表格,我正在使用从 Worldclim 站点下载的 .bil 来获取信息。我想在带有坐标(纬度,经度)的表格中显示温度。我该怎么做?

当我这样做时:

temperature1<-raster("tmean_8.bil")
head(temperature1)

我得到这样的结果:

     1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
1  260 259 258 258 259 258 258 257 257 256 255 254 255 255 254 252 251 252 250
2  259 258 258 257 258 257 257 257 257 256 256 257 251 251 252 251 255 255 252
3  260 259 258 258 258 258 256 257 257 255 252 253 254 252 253 251 251 253 253
4  258 257 258 258 256 254 258 258 257 257 255 256 255 257 254 252 255 255 255
....

【问题讨论】:

    标签: r raster


    【解决方案1】:

    试试这个

    as.data.frame(temperature, xy = TRUE)
    

    【讨论】:

    • 这对于大型栅格堆栈来说非常慢。你知道更有效的方法吗?
    • 这是一件低效的事情,所以我一般不会这样做。但是,什么是大的?什么是暗淡(你的堆栈)?图层是什么格式?
    【解决方案2】:

    如果不从http://www.worldclim.org/current 下载大文件,这几乎是melt 应该能够处理的“从宽到长”的问题。下面的 sn-p 从一个矩阵中创建一个 raster 对象,然后将其转换为一个数据框,并使用 melt 将其放入您正在寻找的 x/y 对中。

    library(reshape2)
    library(raster)
    
    ras <- raster(as.matrix(read.table(text = "0 0 0 0 0 0 0 0 0 0
    41 10 2 0 0 0 0 0 0 0
    75 36 20 9 4 2 1 0 0 0
    91 65 47 31 20 13 8 5 3 2
    97 78 64 47 35 25 18 12 8 5
    99 88 76 63 50 39 29 22 16 11
    99 93 85 74 63 52 42 32 25 19
    99 96 91 83 73 64 53 44 35 28
    99 98 94 88 81 72 64 54 46 37
    99 98 96 92 87 80 72 64 55 47")))
    
    # convert raster to a data frame
    ras.df <- as.data.frame(as.matrix(ras))
    
    # setting 'x' column names
    colnames(ras.df) <- 1:10
    
    # creating 'y' column names
    ras.df$y <- 1:10
    
    # wide to long conversion
    ras.df <- melt(ras.df, id.vars="y")
    
    # better names
    colnames(ras.df) <- c("y", "x", "value")
    
    head(ras)
    
    ##     1  2  3  4  5  6  7  8  9 10
    ## 1   0  0  0  0  0  0  0  0  0  0
    ## 2  41 10  2  0  0  0  0  0  0  0
    ## 3  75 36 20  9  4  2  1  0  0  0
    ## 4  91 65 47 31 20 13  8  5  3  2
    ## 5  97 78 64 47 35 25 18 12  8  5
    ## 6  99 88 76 63 50 39 29 22 16 11
    ## 7  99 93 85 74 63 52 42 32 25 19
    ## 8  99 96 91 83 73 64 53 44 35 28
    ## 9  99 98 94 88 81 72 64 54 46 37
    ## 10 99 98 96 92 87 80 72 64 55 47
    
    
    head(ras.df)
    
    ##   y x value
    ## 1 1 1     0
    ## 2 2 1    41
    ## 3 3 1    75
    ## 4 4 1    91
    ## 5 5 1    97
    ## 6 6 1    99
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 2019-05-08
      相关资源
      最近更新 更多