如何光栅化而不是在 r 中获取重复信息

How to rasterise and not to get duplicate information in r

我在使用 R 中的光栅包对 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)

有人能看到我在上面 missing/screwing 吗?

谢谢

编辑: 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

由于您没有显示 head(FILE_ENV)(在我的代码中为 d),所以很难说您应该如何做到这一点。但本质上你应该能够做如下的事情:

library(raster)
d <- read.csv('ENV_DATABASE.csv')
r <- rasterFromXYZ(d, crs="+proj=longlat +datum=WGS84")

我认为 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 应该包含您的光栅。