それはすべてラスターの単位に依存し、それは投影法に依存します。ラスターはメートル単位の正方形のグリッドでさえないかもしれません - それらはメートル単位の正方形ではない角度単位の正方形かもしれません!
赤道での経度 1 度は、地球の円周の 1/360 です。北極の近くでは 1 度の距離ははるかに短く、極ではほぼゼロです。ただし、緯度は一定です。
ラスターのコーナーポイントを取得し、それらを緯度と経度の座標に変換してから、それらの間の大円距離を計算することができます (これを行う rdist 関数がどこかにあります)。ただし、ラスターが地球全体にまたがる場合、これは機能しません。これは、北西の角と北東の角が同じポイントにあるためです...うーん。とにかく、答えは... 42です。
オーストラリアの 1 km のラスターを作成したい場合は、オーストラリアのキロメートル単位の座標系が必要です。英国では、OSGB National Grid と呼ばれる、メートル法グリッドに十分近いシステムがあります。オーストラリアは英国よりも少し大きいため、よりトリッキーかもしれません...つまり、オーストラリアにはいくつかのグリッドシステムがあるようです。ここを参照してください:
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
km に丸められたラスター範囲オブジェクトを作成します。
> 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 になっているのがわかりますか? これは1kmグリッドです。問題は、これが海岸で少し歪む可能性があることです。緯度と経度 (epsg:4326) に変換してから、海岸のポイントの適切な AGD ゾーンに変換し、それらがどのように異なるかを確認することで、どの程度歪んでいるかを調べることができます。オフセットを除いて、それらは非常に近い場合があります。
とにかく、ナフは言った。