我使用的是带有普通墨托映射的开放式套件,并且正在尝试通过在LATLONG中找到积分网格来对边界框进行采样。 Bbox用拉特隆表示,例如

48.1388,-15.3616,55.2057,-3.9359

我可以定义一个距离 学位 (例如x:2.5,y:2.4)并从那里弄清楚点。但是我想在 仪表 (例如50000)为了将其与用户心态相关联(人们了解仪表,而不是学位)。我该如何转换这个距离?我知道如何重新分辨一个点,但没有距离。

感谢您的任何提示! mulone

有帮助吗?

解决方案

使用 Haversine公式 要在两个点/长的两个点之间获得距离。假设地球是一个球体(在大多数情况下,“足够好”)。

IT的JavaScript实现(无耻地从中偷走了 这里)看起来像这样:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

其他提示

不允许地球略微非球形的形状

一分钟的纬度向北到南= 1海里= 6075英尺,因此一个程度= 60分钟= 60 * 6075英尺,一米有3.28英尺,因此一个度= 60 * 60 * 6075 / 3.28米= 111,128米

另外,一分钟的纬度= 1,852米,因此一个度= 60 * 1852米= 111,120米

我不确定哪个更准确...

对于一个经度的程度,请做同样的事情,但要乘以余弦(纬度),因为经度线在向北移动时越来越近。

度和仪表之间的转化在地球表面各不相同。

假设球形地球,纬度=距离 * 360 /(2 * pi * 6400000)

请注意,经度会根据纬度而有所不同:

程度经度=距离 * 360 * /(2 * pi * cos(latitude))

以上是针对地球表面的,并且不使用默塞托投影。如果您想使用投影线性距离,则需要使用Mercator投影。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top