Почему я получаю разные результаты при построении слоя NetCDF с "image(x,y,z)" и "plot (растр)" с использованием R-пакета Raster?

Это может быть что-то действительно простое, чтобы исправить.

Я хочу нанести на карту слой данных из файла NetCDF, используя функцию plot (растр). Я не знаю, почему я получаю перекос / смещение растра (я думаю, что проблема в преобразовании, разрешении?), Как показано на следующем рисунке.

Неверная карта

Если я использую функцию image(x,y,z...) с матрицами lat,lng, value, я получаю правильное отображение, как показано здесь:

Правильная карта

Это код в R, который я использую:

library(ncdf)
library(raster)

# This is opening the NetCDF layer as a raster
varRaster<-raster("SMOS_File.nc", varname="Soil_Moisture")

# Showing the information of the raster
varRaster
class       : RasterLayer 
dimensions  : 586, 1383, 810438  (nrow, ncol, ncell)
resolution  : 0.2603037, 0.2916659  (x, y)
extent      : -180, 180, -85.4581, 85.4581  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : SMOS_File.nc 
names       : Retrieved.soil.moisture.value 
zvar        : Soil_Moisture 

plot(varRaster)
data(wrld_simpl)
plot(wrld_simpl, add = TRUE) #This produces the incorrect map 

# If I use the "image" function I can get the right overlay of the data

ex.nc = open.ncdf("SMOS_File.nc")
print(ex.nc)
summary(ex.nc)
y = get.var.ncdf( ex.nc, "lat")  
x = get.var.ncdf( ex.nc, "lon")
z = get.var.ncdf( ex.nc, "Soil_Moisture")

image(x,y,z, zlim=c(-0.9,1), col = heat.colors(37))
plot(wrld_simpl, add = TRUE) #This produces the correct map 

Есть идеи, почему это может происходить? Я хотел бы использовать растровую версию и сохранить ее как геотиф.

1 ответ

Решение

Я предполагал, что слой netcdf был обычной сеткой, а это не так. Таким образом, требуется система координат + преобразование (спасибо Spacedman на gis.stackexchange.com)

Поставщик данных подтвердил систему координат EASE - код EPSG 3410

Пост, который помог мне с этим от Spacedman в https://gis.stackexchange.com/questions/48518/how-to-re-project-ease-equal-area-scalable-earth-grid-with-a-25-km-cylindrica

Теперь, кажется, работает следующее

library(ncdf)
library(raster)
library(maptools)
source("http://dl.dropboxusercontent.com/u/3394649/R_libs/ConversionFunctions.R") #Thanks to Spacedman at  https://gis.stackexchange.com/questions/48518/how-to-re-project-ease-equal-area-scalable-earth-grid-with-a-25-km-cylindrica

data(wrld_simpl)

varRaster <- ConvertGrid("SMOS_File.nc", "Soil_Moisture")

varRaster[varRaster < 0 ] <- NA
varRaster <- TransformTo(varRaster)

#With Plot
plot(varRaster)
plot(wrld_simpl, add = TRUE)

#Now with 'image'
image(varRaster, useRaster=TRUE)
plot(wrld_simpl, add = TRUE)

Спасибо за помощь...

Гильермо

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