R spatstat:由nndist检索的距离单位

时间:2015-02-12 23:27:35

标签: r distance spatstat

我为一个愚蠢的(但对我而言非常必要)的问题感到羞愧。我在一个矩形的ca.中几乎随机分布了一堆lat / lon点。两个x三度(纬度x经度)。

我需要计算到第二个最近邻居的最大距离以及到最远邻居的最大距离。我使用包spatstat

计算了这些
d2 <- max(nndist(data[,2:3], k = 2)
dn <- max(nndist(data[,2:3], k=(nrow(data))-1))

分别得到的距离为0.3至4.2。

我需要这些距离以千米为单位。 所以,我认为由nndist提供的距离以弧度表示 因此,如果θ= a / r,其中θ是弧度的对向角,a是弧长,r是地球半径),那么,为了计算a,方程变为:a =θr。

但是,以这种方式转换的距离范围为:

a = 6371 * 0.3 = 1911.3,

a = 6371 * 4.2 = 2650.2

这显然是错的;因为使用的最大距离 - 例如 - 最远点之间的Qgis仅为480 km ......

有人能指出我在哪里弄错了吗?

提前多多感谢!!!

1 个答案:

答案 0 :(得分:3)

nndist只是计算欧氏距离。它没有单位转换。因此,您在&#34; degrees&#34;中给出了它的值,因此它将返回一个单位为度的值。 (不是弧度)。

因此

6371*0.3*pi/180 = 33.36

将给出这些点之间距离的近似值。

更好的方法是使用较大的圆距离(例如在geospheregstat包中或将纬度/经度坐标投影到适当的地图投影上。(rgdal::spTransform会做这个)然后nndist将以米为单位计算你的距离。