使用R进行栅格转表处理

4
我希望使用R语言中的head命令将从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
....
2个回答

8

试试这个

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

这对于大型光栅堆栈来说非常缓慢。你知道更有效的方法吗? - philiporlando
这是一件低效的事情,所以我通常不会这样做。但是,什么是大?你的栈有多大?一个图层是什么格式? - mdsumner

2

如果不想从http://www.worldclim.org/current下载大文件,那么这基本上是一个“宽到长”的问题,可以使用melt函数解决。以下代码片段将从矩阵创建一个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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接