2 个拉特隆点之间的距离

发布于 2024-10-30 20:21:55 字数 204 浏览 1 评论 0原文

我想计算出两个拉特隆点之间的距离。 简单距离公式 http://www.purplemath.com/modules/distform.htm不正确,因为我们正在处理两种不同的度量(纬度和经度)。

这个问题有标准的解决方案吗?

I want to work out the distance between 2 latlon points.
The simple distance formula http://www.purplemath.com/modules/distform.htm is not correct because we are dealing with 2 different measures (lat and lon).

Is there a standard solution to this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽梦忆笙歌 2024-11-06 20:21:55

试试这个,
它使用“半正矢”公式来计算两点之间的大圆距离(即地球表面上的最短距离),给出点之间的“乌鸦飞行”距离(忽略任何山丘!) 。

半正矢公式:

R = earth’s radius (mean radius = 6,371km)

Δlat = lat2− lat1
Δlong = long2−long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = Rc

或使用链接http://www.movable-type。 co.uk/scripts/latlong.html

try this,
This uses the ‘haversine’ formula to calculate great-circle distances between the two points – that is, the shortest distance over the earth’s surface – giving an ‘as-the-crow-flies’ distance between the points (ignoring any hills!).

Haversine formula:

R = earth’s radius (mean radius = 6,371km)

Δlat = lat2− lat1
Δlong = long2− long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c

or go with the link,http://www.movable-type.co.uk/scripts/latlong.html

老娘不死你永远是小三 2024-11-06 20:21:55

尝试这个 javascript hasrsine 函数以及 torad() 辅助函数,我将其用于我的地图应用程序

function calculateHaversineDistance(lat1x, lon1, lat2x, lon2) {
    var R = 6371; // km
    var dLat = toRad(lat2x-lat1x);
    var dLon = toRad(lon2-lon1);
    var lat1 = toRad(lat1x);
    var lat2 = toRad(lat2x);
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    return R * c;
 }
function toRad(x) {
    return x * Math.PI / 180;
 }

希望这会有所帮助。

Try this javascript haversine function alongside the torad() helper function, which I use for my map app

function calculateHaversineDistance(lat1x, lon1, lat2x, lon2) {
    var R = 6371; // km
    var dLat = toRad(lat2x-lat1x);
    var dLon = toRad(lon2-lon1);
    var lat1 = toRad(lat1x);
    var lat2 = toRad(lat2x);
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    return R * c;
 }
function toRad(x) {
    return x * Math.PI / 180;
 }

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文