1

我很惭愧用一个愚蠢的(但对我来说非常必要的)问题来打扰你。我有一堆纬度/经度点几乎随机分布在 ca 的一个矩形内。2 x 3 度(纬度 x 经度)。

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

d2 <- max(nndist(data[,2:3], k = 2)
dn <- max(nndist(data[,2:3], k=(nrow(data))-1))

,分别获得的距离为 0.3 到 4.2。

我需要以公里为单位的这些距离。所以,我认为距离由nndistwhere 以弧度表示。
因此,如果 θ = a /r,其中 θ 是以弧度为单位的对角,a 是弧长,r 是地球半径),则计算a方程变为:a = θr。

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

a = 6371 * 0.3 = 1911.3,并且

a= 6371 * 4.2 = 2650.2

这显然是错误的;因为使用 Qgis 测量的最远点之间的最大距离仅为 480 公里……</p>

谁能指出我错在哪里?

非常感谢提前!!!

4

1 回答 1

3

nndist只是计算欧几里得距离。它不进行单位转换。因此,您以“度”为单位赋予了它的值,因此它将返回一个以度为单位的值。(不是弧度)。

因此

6371*0.3*pi/180 = 33.36

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

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

于 2015-02-12T23:42:27.510 回答