如何栅格化和不得到重复的信息在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)

有人能看出我在这里错过了什么吗?

感谢

编辑:head(FILE_ENV)

lonlat BAT bat_class SLOPE SEDIMENT SST sstrongeabed SstrongUM SST_WIN SAL_SURF sal_seabed…

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

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

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

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

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

6 -177.25 89.75 3063 NA 0.15619729 NA NA NA NA NA NA NA NA NA 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应该包含您的栅格。

相关内容

  • 没有找到相关文章

最新更新