使用r的光栅到表

时间:2014-08-24 23:33:30

标签: r raster

我想使用命令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
....

2 个答案:

答案 0 :(得分:5)

试试这个

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

答案 1 :(得分:1)

如果没有从http://www.worldclim.org/current下载大文件,这几乎就是一个很长的&#34; melt应该能够处理的问题。以下代码段从矩阵中生成raster对象,然后将其转换为数据框并使用“熔化”将其转换为您正在寻找的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