根据两个经纬度点计算距离

article/2025/8/27 16:36:08

根据两个经纬度点计算距离

img

假设要算的距离为A、B两点之间的距离,A、B两点的经线相交于南北极,纬线平行,找出C点和B点同一条纬线和A点同一条经线,同理找出D点。这时如果想要知道A和B距离只要知道角AOB的角度再根据求弧长的公式即可得出。现在问题简化为求角AOB,O为地球球心到表面四个点的长度都是地球半径。所以我们求出AB的直线距离就可以求出角AOB的度数。这时我们可以把它简化为平面等腰梯形求对边的长度了。

img

推导过程:

维度(0-90):lat1,lat2
经度(0-180):lon1,lon2
维度差:dlat = lat1 -lat 2;
精度差: dlon = lon1 - lon2;
地球半径:r
角AOC的值为维度差
角AOD和角COB的值为经度差 
AC = 2*r*sin(dlat/2);
AO'= COS(lat1)*r;
AD = 2*AO'*sin(dlon/2) = 2*COS(lat1)*r*sin(dlon/2);
CB = 2*COS(lat2)*r*sin(dlon/2);
CH = (CB - AD)/2;
AH^2 = AC^2 - CH^2
HB = CB - CH;
AB = AH^2 + HB^2;
化简可得
AB^2 = AC^2 + CB*AD=4*r*r*sin(dlat/2)^2 + 2*COS(lat2)*r*sin(dlon/2)*2*COS(lat1)*r*sin(dlon/2);
AB = 2*r*sqrt(sin(dlat/2)^2 + COS(lat2)*COS(lat1)*sin(dlon/2)^2);
h = r*sqrt(sin(dlat/2)^2 + COS(lat2)*COS(lat1)*sin(dlon/2)^2); // 弦AB的一半
sin(AOB/2= h/r = sqrt(sin(dlat/2)^2 + COS(lat2)*COS(lat1)*sin(dlon/2)^2) //	角AOB一半的正弦值
d_rad = 2 * asin(h/r) = asin(sqrt(sin(dlat/2)^2 + COS(lat2)*COS(lat1)*sin(dlon/2)^2)); //角AOB之间的角度
d = d_rad * r;

程序

#include <stdio.h>
#include <math.h>/********弧度计算公式*********/
double earth_rad (double w_rad)
{const double pi = 3.1415926535898;return (pi*w_rad)/180;
}/********经纬度距离计算公式*********/
//lon:经度
//lat:维度
//返回值单位为 m
double get_distance (double lon1, double lat1, double lon2, double lat2)
{const double radius = 6378.137;double dlat = earth_rad(lat2) - earth_rad(lat1);          //维度差double dlon = earth_rad(lon1) - earth_rad(lon2);          //经度差double r_lat1 = earth_rad(lat1);double r_lat2 = earth_rad(lat2);double sindlat = sin(dlat/2)*sin(dlat/2);double sindlon = sin(dlon/2)*sin(dlon/2);double harve = 2 * asin(sqrt(sindlat + cos(r_lat1)*cos(r_lat2)*sindlon));return harve * radius * 1000;
}

http://chatgpt.dhexx.cn/article/ENW1vHx0.shtml

相关文章

根据经纬度坐标计算实际距离

double hypot( double x, double y) ... { return sqrt(x * x y * y);} double distance( double wd1, double jd1, double wd2, double jd2) ... {// 根据经纬度坐标计算实际距离 double x, y, out; double PI 3.1415926535898; double R 6.3712…

计算经纬度之间的距离

给你两个经纬度&#xff0c;计算他们之间的距离 这些经纬线是怎样定出来的呢&#xff1f;地球是在不停地绕地轴旋转&#xff08;地轴是一根通过地球南北两极和地球中心的 假想线&#xff09;&#xff0c;在地球中腰画一个与地轴垂直的大圆圈&#xff0c;使圈上的每一点都和南北…

通过经纬度坐标计算距离的方法(实为通过一个经纬度和距离角度求另一个经纬度)

转自&#xff1a;https://www.cnblogs.com/softfair/p/lat_lon_distance_bearing_new_lat_lon.html 通过经纬度坐标计算距离的方法&#xff08;经纬度距离计算&#xff09; 通过经纬度坐标计算距离的方法&#xff08;经纬度距离计算&#xff09; 最近在网上搜索“通过经纬度…

经纬度计算距离

通过经纬度坐标计算距离的方法&#xff08;经纬度距离计算&#xff09; 最近在网上搜索“通过经纬度坐标计算距离的方法”&#xff0c;发现网上大部分都是如下的代码&#xff1a; #define PI 3.14159265 static double Rc 6378137; // 赤道半径 static double Rj 6356725; …

Mysql 根据经纬度计算距离

方式1&#xff1a;st_distance_sphere st_distance_sphere函数返回以米为单位 SELECT*,st_distance_sphere (point ( longitudes, latitudes ),point ( 113.264435, 23.129163 )) AS juli FROMzxh_distance ORDER BYjuli ASC;方式2&#xff1a;st_distance st_distance返回的…

计算经纬度点之间的距离

球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章。 Great-circle distance Haversine formula 值得一提的是&#xff0c;维基百科推荐使用Haversine公式&#xff0c;理由是Great-circle distance公式用到了大量余弦函数&#xff0c; 而两点间距离很短时&#x…

计算两个经纬度的距离

一 点睛 计算两个经纬度的距离的方法这里提供两种。 1 基于 googleMap 中的算法得到两经纬度之间的距离&#xff0c;计算精度与谷歌地图的距离精度差不多。 2 计算中心经纬度与目标经纬度的距离(米) 二 代码 public class LongitudeLatitude {/*** 默认地球半径*/private …

根据两点经纬度计算距离

根据两点经纬度计算距离 这些经纬线是怎样定出来的呢&#xff1f;地球是在不停地绕地轴旋转&#xff08;地轴是一根通过地球南北两极和地球中心的 假想线&#xff09;&#xff0c;在地球中腰画一个与地轴垂直的大圆圈&#xff0c;使圈上的每一点都和南北两极的距离相等&#xf…

通过经纬度坐标计算距离的方法(经纬度距离计算)

通过经纬度坐标计算距离的方法&#xff08;经纬度距离计算&#xff09; 最近在网上搜索“通过经纬度坐标计算距离的方法”&#xff0c;发现网上大部分都是如下的代码&#xff1a; #define PI 3.14159265 static double Rc 6378137; // 赤道半径 static double Rj 635672…

根据经纬度计算两点之间的距离

前言 在我们平时使用美团&#xff0c;饿了么等app进行订餐&#xff0c;或者使用猫眼进行订电影票的时候&#xff0c;都有一个距离的排序&#xff0c;表明该家店距离我们当前的位置&#xff0c;这种基于地理位置的服务&#xff0c;统一被称为LBS&#xff08;Location Based Ser…

logistic模型原理与推导过程分析(1)

从线性分类器谈起 给定一些数据集合&#xff0c;他们分别属于两个不同的类别。例如对于广告数据来说&#xff0c;是典型的二分类问题&#xff0c;一般将被点击的数据称为正样本&#xff0c;没被点击的数据称为负样本。现在我们要找到一个线性分类器&#xff0c;将这些数据分为两…

阻滞增长模型--Logistic模型

文章目录 写在前面一、思路二、原始数据三、源代码四、结果 写在前面 做了一个作业&#xff0c;觉得挺有意思&#xff0c;有空就发上来了。 阻滞增长模型–Logistic模型的部分推导、思路&#xff0c;并给出参考代码。 参考书籍&#xff1a;《数学模型》第四版&#xff0c;姜启…

logistic模型原理与推导过程分析(2)

二项逻辑回归模型 既然logistic回归把结果压缩到连续的区间(0,1)&#xff0c;而不是离散的0或者1&#xff0c;然后我们可以取定一个阈值&#xff0c;通常以0.5为阈值&#xff0c;如果计算出来的概率大于0.5&#xff0c;则将结果归为一类&#xff08;1&#xff09;&#xff0c;…

从logit变换到logistic模型

从logit变换到logistic模型 logit变换几率logistic模型 前面我们知道对数函数和对数函数的一些基本性质&#xff0c;也许你会问&#xff0c;为什么要引入对数函数&#xff1f;而且还是一个基本初等函数&#xff1f;这就要从logit变换说起。 logit变换 我们在研究某一结果&…

Gompertz模型绘图 matlab,Logistic模型matlab求解

Logistic模型求解怎么用matlab求解啊&#xff1f; 悬赏分&#xff1a;100 - 解决时间&#xff1a;2008-11-17 23:09 已知 x0:1:12 y[43.65 109.86 187.21 312.67 496.58 707.65 960.25 1238.75 1560.00 1824.29 2199.00 2438.89 2737.71] yL/(1a*exp(-k*x)) 利用线性回归模型所…

数学建模-Logistic模型

文章目录 Malthus模型模型假设建模与求解模型评价 Logistic模型模型假设建模与求解模型检验 为了更好地理解Logistic模型&#xff0c;我们先看看Malthus模型 Malthus模型 这是英国神父Malthus通过对一百多年人口统计资料的分析之后提出的人口模型假设 模型假设 设x(t)表示t时…

数学建模-Logistic模型附Matlab代码

目录 一、Logistic模型介绍 二、Logistic模型实例 三、Logistic模型原理 3.1 Logistic 方程定义 3.2 Yule算法 3.2 Rhodes算法 3.3 Nair算法 4、Logistic模型Matlab部分代码 4.1 Yule算法 4.2 Rhodes算法 4.3 Nair算法 一、Logistic模型介绍 logistic回归又称logi…

logistic回归模型—基于R

logistic回归模型—基于R 数据理解和准备一. 对缺失值的处理二.虚拟变量的赋值三.箱线图四.相关性分析 训练集与测试集的划分模型构建与评价一.logistic回归模型二.检查模型在训练数据集和测试数据集上的表现使用交叉验证的logistic回归 logistic回归又称logistic回归分析&…

数学模型——Logistic回归模型(含Matlab代码)

写在前面 Logistic回归模型是一种非常常见的统计回归模型&#xff0c;在处理大量数据&#xff0c;揭示各自变量如何作用于因变量&#xff08;描述X与Y之间的关系&#xff09;时有着十分重要的作用。笔者在写Logit回归模型前参加了一次市场调研比赛&#xff0c;在这次比赛中学到…

菜鸟的数学建模之路(五):Logistic模型

matlab实现 Logistic回归跟多元线性回归差不多&#xff0c;但是有区别&#xff1a; &#xff08;1&#xff09; 线性回归&#xff1a;y是一个定量的变量&#xff0c;这时y对于不同的自变量来说有相应的值。 &#xff08;2&#xff09; Logistic回归&#xff1a;y是一个定性的变…