从R中的NetCDF文件中提取特定于站点的信息

时间:2016-08-24 12:51:42

标签: r netcdf netcdf4

我从德国气象局获得了一份关于欧洲平均气温的NetCDF文件(CDC FDP SERVER)。我唯一想要提取的是Bornholm的日平均温度,Bornholm是波罗的海中部的一个岛屿。

我知道如何提取某些坐标的信息(参见下面的代码示例)。唯一的问题是文件特定的坐标是“旋转的”,这就是博恩霍尔姆(从GoogleMaps中提取)的地理坐标有点无用的原因。

packages <- c("RNetCDF",
              "ncdf4",
              "raster")

lapply(packages, require, character.only = TRUE)

x <- mean(14.68,15.16)        #coordinates for a rectangle around 
y <- mean(54.987,55.299)      #Bornholm extracted from GoogleMaps

temp <- nc_open("tas_decreg_europe_v20140120_20030101_20030131.nc")
temp

var <- ncvar_get(temp, "tas")
point <- var[x,y,]
as.data.frame(point)

要缩短它 - Google使用墨卡托投影的近似变体。那么我如何转换NetCDF文件或GoogleMaps的坐标,以便找到我需要的东西。我可以打赌那里有一个简单的解决方案,但不幸的是没有 - 至少我找不到一个。

有关print(temp)生成的文件的信息,请参阅下文:

File tas_decreg_europe_v20140120_20030101_20030131.nc (NC_FORMAT_CLASSIC):

     2 variables (excluding dimension variables):
        char rotated_pole[]   
            grid_mapping_name: rotated_latitude_longitude
            grid_north_pole_latitude: 39.25
            grid_north_pole_longitude: -162
        float tas[lon,lat,time]   
            long_name: Near-Surface Air Temperature
            units: K
            grid_mapping: rotated_pole
            _FillValue: 1.00000002004088e+20
            missing_value: 1.00000002004088e+20

     3 dimensions:
        lon  Size:1056
            standard_name: grid_longitude
            long_name: longitude
            units: degrees_east
            axis: X
        lat  Size:1026
            standard_name: grid_latitude
            long_name: latitude
            units: degrees_north
            axis: Y
        time  Size:31   *** is unlimited ***
            standard_name: time
            units: days since 2003-01-01 00:00:00
            calendar: standard

感谢任何帮助。非常感谢...

1 个答案:

答案 0 :(得分:0)

您加载了光栅包,但不使用它。你尝试过类似下面的东西吗?

FILE *