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