我从德国气象局获得了有关欧洲平均气温的NetCDF文件(CDC FDP SERVER)。我要提取的唯一东西是博恩霍尔姆的每日平均温度,这是波罗的海中部的一个岛屿。
我知道如何提取某些坐标的信息(请参见下面的代码示例)。唯一的问题是文件的特定坐标是“旋转的”,这就是为什么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使用了Mercator投影的近似变体。因此,如何转换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
任何帮助表示赞赏。非常感谢...
您加载栅格数据包,但您不使用它。您是否尝试过以下类似的方法?
library(raster)
x <- mean(14.68,15.16)
y <- mean(54.987,55.299)
temp <- brick("tas_decreg_europe_v20140120_20030101_20030131.nc", var='tas')
extract(temp, cbind(x,y))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句