Как растеризовать и не получить дубликат информации в т

У меня возникли проблемы при растеризации data.frame с использованием пакета растров в R.

Мой 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 НАКЛОН 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 НС 0,07784129 НС НС НС НС НС НС

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

2 ответа

Решение

Так как вы не показали head(FILE_ENV) (d в моем коде) трудно сказать, как именно вы должны к этому. Но по сути вы должны быть в состоянии сделать что-то вроде ниже:

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

Я думаю, что растр от XYZ сработал бы. Тем не менее, кажется, что это работает лучше всего при работе с 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 должен содержать ваш растр.

Другие вопросы по тегам