gpt4 book ai didi

R 中栅格的分辨率值

转载 作者:行者123 更新时间:2023-12-03 02:39:05 24 4
gpt4 key购买 nike

我只是想知道是否有人有 R 中栅格分辨率的转换表。我想知道这些数字以米为单位:

分辨率:0.08333333、0.08333333

分辨率:0.009398496、0.009398496
分辨率:0.002349, 0.002349 = 250m(我认为)

我真的很想知道设置栅格对象的分辨率以使像元大小为 1km^2。我正在使用跨越澳大利亚全国的栅格。

提前感谢大家。

干杯,亚当

最佳答案

这一切都取决于栅格的单位,并且取决于投影。栅格甚至可能不是以米为单位的正方形网格 - 它们可能是以度为单位的正方形,但不是以米为单位的正方形!

赤道1度经度是地球周长的1/360。在北极附近,1 度的距离要小得多,而在北极,它几乎为零。然而纬度是恒定的。

您可以获取栅格的角点,如果还没有将它们转换为经纬度坐标,然后计算出它们之间的大圆距离(我记得有一个 rdist 函数可以做到这一点)。但是,如果您的栅格跨越整个地球,那么这将不起作用,因为那时您的西北角和东北角位于同一点......嗯。不管怎样,答案是……42。

如果你想制作澳大利亚 1 公里的栅格,那么......你需要一个以公里为单位的澳大利亚坐标系。在英国,我们有一个称为 OSGB 国家电网的系统,它非常接近公制网格。澳大利亚可能会更棘手,因为它比英国稍大……所以澳大利亚似乎有一些网格系统。请参阅此处:

http://www.spatialreference.org/ref/?search=AGD84

因此,您可能希望使用位于该国中部的系统来避免最严重的扭曲,然后计算出澳大利亚经纬度的边界,转换为 epsg:20353 并基于此创建栅格:

我认为澳大利亚的经纬度大致为:

> xtll
[,1] [,2]
[1,] 112.5162 -43.906900
[2,] 155.8425 -7.585619

将其变成 SpatialPoints 对象:

> xtll=SpatialPoints(xtll,CRS("+init=epsg:4326"))

转换为该国中部的 AGD84:

> spTransform(xtll,CRS("+init=epsg:20353"))
SpatialPoints:
coords.x1 coords.x2
[1,] -1306200 4886041
[2,] 2849956 9103124

将栅格范围对象四舍五入为公里:

> ext = extent(-1306000,2850000,4886000,9103000)

我们需要多少行和列?

> length(-1306:2850)
[1] 4157
> length(4886:9103)
[1] 4218

创建栅格:

> r = raster(ext,ncol=4156,nrow=4217,crs="+init=epsg:20353")
> r
class : RasterLayer
dimensions : 4217, 4156, 17525852 (nrow, ncol, ncell)
resolution : 1000, 1000 (x, y)
extent : -1306000, 2850000, 4886000, 9103000 (xmin, xmax, ymin, ymax)
coord. ref. : +init=epsg:20353 +proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs
values : none

请注意,ncol 和 nrow 值比边界值小 1 - 将这些值放入其中将导致栅栏错误。

看看我的分辨率是1000吗?这是一个1公里长的网格。问题是,这在海岸可能会有点扭曲。您可以通过转换为经纬度 (epsg:4326),然后转换为海岸上的点的正确 AGD 区域,并查看它们有多么不同来计算出扭曲程度。除了偏移之外,它们可能非常接近。

无论如何,没说。

关于R 中栅格的分辨率值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com