Как растеризовать и не получить дубликат информации в т
У меня возникли проблемы при растеризации 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 должен содержать ваш растр.