我使用paleoview软件从过去的气候中下载了一些变量,包括15000BP-10000BP的平均温度(我可以根据要求上传文件,但至少是GB)。
主要问题是,当我读取光栅时,它只包含正纬度和正经度。我从文章中知道,这有一个2.5*2.5的分辨率。
我加载了光栅和ncdf4库,以使用光栅读取它
library(raster)
library(ncdf4)
当我使用以下代码阅读时
r <- raster("mean_temperature-15000BP-10000BP.nc", varname = "14000BP-13000BP/13300BP")
我得到以下信息
r
class : RasterLayer
band : 1 (of 12 bands)
dimensions : 72, 144, 10368 (nrow, ncol, ncell)
resolution : 1, 1 (x, y)
extent : 0.5, 144.5, 0.5, 72.5 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
names : Mean.Temperature
z-value : 1
zvar : 14000BP-13000BP/13300BP
正如你所看到的,范围只是正的,但我知道它有整个世界的数据,当我绘制地图时,我得到了以下图像:
plot(r)
这清楚地显示了极圈温度极低,南极洲比北极大的情况下的预期模式。
很明显,这里的proj = long lat datum = WGS 84 ellps = WGS 84 tow GS 84 = 0,0,0是错误的,我想如果我算出实际坐标是多少。参考文献。我可以重新投影,得到正确格式的栅格
我尝试使用ncdf4包来尝试从图层中获取更多信息,这就是我所做的:
nc <- nc_open("mean_temperature-15000BP-10000BP.nc")
在使用nc_open
函数读取层之后,我看到了变量的名称,以试图了解更多层,这里我显示了前10个
names(nc$var)[1:10]
[1] "window" "width" "decimals" "months" "latitudes" "longitudes" "15100BP-15000BP/15100BP" "15100BP-15000BP/15099BP"
[9] "15100BP-15000BP/15098BP" "15100BP-15000BP/15097BP"
所以如果我继续寻找并转到我得到的纬度和经度名称:
ncatt_get(nc, attributes(nc$var)$names[5])
$units
[1] "degrees north"
和
ncatt_get(nc, attributes(nc$var)$names[6])
$units
[1] "degrees east"
关于如何重新投影此栅格以获得从 -90、90 和经度从 -180 到 180 的任何想法,您在 proj=longlat ellps=WGS84 基准面=WGS84 no_defs towgs84=0,0,0 投影中
要解决这个问题,您可以设置范围:
library(raster)
r <- raster("mean_temperature-15000BP-10000BP.nc", varname = "14000BP-13000BP/13300BP")
extent(r) <- c(-180,180,-90,90)
但请注意,有时气候数据中的经度从0到360(我想不是这里):
extent(r) <- c(0,360,-90,90)
r <- rotate(r)
要了解ncdf的更多内容,您可以
print(r)
当然,您只想这样做,因为您非常确定程度,并且您可能希望联系数据提供商报告此问题。
我想用xarray创建一个NetCDF文件,并尝试理解此处有关“创建数据集”的文档。 下面是示例中的代码(将ds保存到NetCDF): 从上面的例子中,我希望得到一个具有三个维度(x,y,时间)的两个变量(温度,降水)的NetCDF。我希望尺寸在 x 方向上为 2,在 y 方向上为 2,在时间方向上为 3。根据@Bart的测试(评论),NetCDF就是这种情况。因此,当在QGIS 3.4(EPSG
我有一对纬度 然而,我需要一个更灵活的解决方案,例如,我希望能够指定1/3, 1/4, 8/9等对点之间。 注:lat1,long1
我有一个 netCDF 文件,我希望使用 R 中的“ncdf”包从由纬度/经度边界定义的子集(即经纬度/经度定义的框)中提取子集。 下面是我的netCDF文件的摘要。它有两个维度(纬度和经度)和一个变量(10U_GDS4_SFC)。它本质上是一个包含风值的平面/长网格: 纬度变量从 90 到 -90,经度变量从 0 到 360。 我希望使用以下地理角边界提取整个网格的子集: 左下角:纬度:34.5
我正在下载netcdf格式的气候数据。对于每个变量(例如“降水量”),我需要合并9个netcdf,每个都属于一个独特的气候模型。每个netcdf具有相同的大小(time、lat、lon)。如何将9个3D netcdf合并为一个4D netcdf?最后,我想计算每月的累积降水量。这是我的当前代码: 上面的代码有效,但我正在创建一个大的3D netcdf,而不是一个仍然包含气候模型名称的4D。以下代码
我有一个onCreate的活动,它计算您的位置和附近的事件之间的距离,我使用lastNotnloceto获取当前设备位置并在谷歌地图上标记它,但我需要它来写经度和纬度它的方法之外用于计算距离。 我已经使用LocationManager来获取粗略的坐标,但这些坐标不够准确,对于距离不到半英里的东西来说,距离为50英里。我目前拥有它,因此将覆盖从LocationManager获得的经度和纬度,但它没有
问题内容: 在询问具体的代码示例之前,我只想问一下是否可以进行类似此伪代码的查询: 从表中选择项目,其中经度/经度=-在某个经度/经度点的x英里内- 那可行吗?还是我必须跳过一些箍?可以推荐的任何好的方法都很棒! 问题答案: 您应该搜索Haversine公式,但是一个好的开始可能是: 使用PHP,MySQL和Google Maps创建商店定位器 -请参见“使用MySQL查找位置”部分 使用MySQ