netCDF到光栅和投影

时间:2014-04-15 20:34:36

标签: projection raster coordinate-systems netcdf

我最近开始将R用于空间数据。如果你能帮助我,我真的很感激。谢谢!

我从多维netCDF文件中提取数据。该文件包含经度,纬度和温度数据(特定年份的12个月)。

从这个netCDF我有一个1月的数据框,包含这些变量:经度,纬度,温度。

通过这个数据框,我创建了一个栅格。

# Packages
library("sp")
library("raster") 
library("rgdal")
library("ncdf")
library("maptools")
library("rgeos")
library("sm")
library("chron")

# Dataframe to raster
# Create spatial points data frame
coordinates(tmp.df01) <- ~ lon + lat
# Coerce to SpatialPixelsDataFrame
gridded(tmp.df01) <- T
# Coerce to raster
rasterDF1 <- raster(tmp.df01)
> print(tmp.df01)
class       : SpatialPixelsDataFrame 
dimensions  : 103, 241, 24823, 1  (nrow, ncol, npixels, nlayers)
resolution  : 0.02083333, 0.02083333  (x, y)
extent      : 5.739583, 10.76042, 45.73958, 47.88542  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
names       :           TabsM_1 
min values  : -18.1389980316162 
max values  :  2.26920962333679 

'coord没有价值。 REF'。

原始netCDF的预测是WGS84。所以我把这个投影给了光栅。

proj4string(rasterDF1) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"

然后,我想将我的光栅重新投影到另一个投影:

# Reprojecting into CH1903_LV03
# First, change the coordinate reference system (crs)
proj4string(rasterDF1) <- "+init=epsg:21781"
# Second, reproject the raster
rasterDF1.CH <- spTransform(rasterDF1, crs("+init=epsg:21781"))

此时我收到以下错误:

Error in spTransform(rasterDF1, crs("+init=epsg:21781")) : 
  load package rgdal for spTransform methods

但是包rgdal已经上传了!代码中一定有问题!

2 个答案:

答案 0 :(得分:4)

这里的代码解决了所描述的问题。

FredeAakmannTøgersen提供的解决方案。

tmp.df01 # tmp.df01 is a data.frame
coordinates(tmp.df01) <- ~ lon + lat # tmp.df01 is now a SpatialPointsDataFrame

# Assign orignial data projection
proj4string(tmp.df01) <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")

gridded(tmp.df01) <- T # tmp.df01 is now a SpatialPixelFrame

# Coerce to raster
rasterDF1 <- raster(tmp.df01) # rasterDF1 is a RasterLayer

# To reproject the raster layer
rasterDF1.proj <- projectRaster(rasterDF1, crs=CRS("+init=epsg:21781"))

答案 1 :(得分:1)

这是另一个选项GDAL。使用gdal_translate,您可以将带有band的netcdf文件转换为geotiffs。

 gdal_translate -a_srs EPSG:4326 NETCDF:File_Name.nc:Band_Name  -of ‘Gtiff’ Output_FileName.geotiff

要了解gdal_translate中的更多选项,您可以访问此link