0

我在使用 R 中的 raster 包对 data.frame 进行光栅化时遇到问题。

我的 data.frame 包含世界海洋的环境数据(温度等)及其坐标(网格 0.5*0.5),十进制经度从 -90 到 90,十进制纬度从 -180 到 180。所以基础包含 90*2* 2 x 180*2*2 = 360*720 = 259200 行,59 个冒号(57 个变量 + 2 个冒号的坐标)。

光栅化后,这就是我得到的plot(r): http: //postimg.org/image/rqocxcbi3/

所以,一个重复的图像,在错误的方向。

我的代码是:

FILE_ENV = read.csv('ENV_DATABASE.csv')
coordinates(FILE_ENV) <- ~LON+LAT
proj4string(FILE_ENV3)=CRS("+init=epsg:4326")
FILE_ENV = spTransform(FILE_ENV,CRS("+init=epsg:4326"))
gridded(FILE_ENV) = TRUE
r = raster(FILE_ENV)

plot(r)

谁能看到我在这里错过/搞砸了什么?

谢谢

编辑 : head(FILE_ENV)

LON LAT BAT BAT_CLASSE SLOPE SEDIMENT SST SST_SEAFLOOR SST_SUM SST_WIN SAL_SURF SAL_SEAFLOOR...

1 -179.75 89.75 2804 NA 0.14031838 NA NA NA NA NA NA NA

2 -179.25 89.75 2941 NA 0.12495525 NA NA NA NA NA NA NA

3 -178.75 89.75 3048 NA 0.07784129 NA NA NA NA NA NA NA

4 -178.25 89.75 3093 NA 0.03123910 NA NA NA NA NA NA NA

5 -177.75 89.75 3109 NA 0.01536359 NA NA NA NA NA NA NA

6 -177.25 89.75 3063 NA 0.15619729 NA NA NA NA NA NA NA

4

2 回答 2

0

由于您没有显示head(FILE_ENV)d在我的代码中),因此很难说您应该如何做到这一点。但从本质上讲,您应该能够执行以下操作:

library(raster)
d <- read.csv('ENV_DATABASE.csv')
r <- rasterFromXYZ(d, crs="+proj=longlat +datum=WGS84")
于 2015-05-30T02:11:22.790 回答
0

我认为 rasterfromXYZ 会起作用。也就是说,似乎在raster将事物分解成更小、更明确的块时效果最好。似乎构造函数假设您想要从对象中得到不同的东西,并且它正在丢失矩阵条目的坐标。

这不是最佳做法,但由于您知道您的数据是一个严格的网格,我们可以将条目转换为点,然后将它们栅格化:

library(raster)
coords <- coordinates(FILE_ENV[,c("LON","LAT")])
spdf <- SpatialPointsDataFrame(coords,data=FILE_ENV)
r <- rasterize(spdf,field='value',raster(nrow=360,ncol=720))

现在 r 应该包含您的栅格。

于 2015-06-02T23:25:40.417 回答