首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在经纬度的两点之间推进X距离(米)?

在经纬度的两点之间推进X距离(米),可以借助地理信息系统(GIS)的计算方法来实现。

一种常用的方法是使用Vincenty公式,该公式是一种精确计算地球上两点之间距离的方法。具体步骤如下:

  1. 将经纬度转换为弧度表示。
    • 经度的弧度表示:radians_longitude = longitude * π / 180
    • 纬度的弧度表示:radians_latitude = latitude * π / 180
  • 计算参数f。
    • f = 1 / 298.257223563 (WGS-84椭球体的扁率)
  • 计算参数L。
    • L = radians_longitude2 - radians_longitude1
  • 计算参数U1和U2。
    • U1 = atan((1 - f) * tan(radians_latitude1))
    • U2 = atan((1 - f) * tan(radians_latitude2))
  • 计算参数sinU1、cosU1、sinU2和cosU2。
    • sinU1 = sin(U1)
    • cosU1 = cos(U1)
    • sinU2 = sin(U2)
    • cosU2 = cos(U2)
  • 计算参数λ。
    • λ = L
  • 迭代计算参数λ,直至收敛。
    • 迭代公式:λ = L + Δλ
    • Δλ = arctan((sin(λ) * cosU2) / (cosU1 * sinU2) - cosU1 * cosU2 * Δσ^2 / (1 - Δσ^2))
    • Δσ = atan((sqrt(cosU2^2 * (sin(λ))^2 + (cosU1 * sinU2 - sinU1 * cosU2 * cos(λ))^2)) / (sinU1 * sinU2 + cosU1 * cosU2 * cos(λ)))
  • 计算参数σ。
    • σ = atan((sqrt((cosU1 * cosU2 * sin(λ))^2 + (cosU1 * sinU2 - sinU1 * cosU2 * cos(λ))^2)) / (sinU1 * sinU2 + cosU1 * cosU2 * cos(λ)))
  • 计算两点间的距离s。
    • s = α * R
    • α = σ + α1 + α2
    • α1 = 2 * atan((sqrt((cosU2 * sin(λ))^2 + (cosU1 * sinU2 - sinU1 * cosU2 * cos(λ))^2)) / (1 + (cosU1 * cosU2 * sin(λ))^2 + (cosU1 * sinU2 - sinU1 * cosU2 * cos(λ))^2))
    • α2 = 2 * atan((sqrt((cosU1 * cos(λ))^2 + (cosU1 * sinU2 - sinU1 * cosU2 * cos(λ))^2)) / (1 + (cosU1 * cosU2 * sin(λ))^2 + (cosU1 * sinU2 - sinU1 * cosU2 * cos(λ))^2))
    • R = 6371000(地球的半径,单位为米)

最终得到的s即为经纬度两点之间的距离,单位为米。

请注意,该方法是一种比较精确的计算方法,但在极端情况下(如两点之间距离非常近),可能会出现精度问题。对于较短距离的计算,也可以使用近似方法,例如球面余弦定理。

推荐腾讯云的相关产品和产品介绍链接地址如下:

  • 地理位置服务(LBS):https://cloud.tencent.com/product/lbs
  • 地图导航(TMap):https://cloud.tencent.com/product/tmap
  • 定位服务(LBS):https://cloud.tencent.com/product/lbs/positioning
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 利用JS实现根据经纬度计算地球上两点之间距离

    最近用到了根据经纬度计算地球表面两点距离公式,然后就用JS实现了一下。 计算地球表面两点距离大概有两种办法。...第一种是默认地球是一个光滑球面,然后计算任意两点距离,这个距离叫做大圆距离(The Great Circle Distance)。...        s = Math.round(s*10000)/10000.0;                          return s;     } 这个公式在大多数情况下比较正确,只有在处理球面上相对点时候...,会出现问题,有一个修正公式,因为没有需要,就没有找出来,可以在wiki上查到。...,当然,最后结果经度实际上还取决于传入坐标的精度。

    3.2K30

    java根据经纬度计算距离_java根据高德经纬度获取地区

    实现方式还是比较简单,首先用户在APP上开启定位权限,将自己经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内所有用户。...那么,如何java如何计算两个经纬度之间距离呢?有两种方法,误差都在接受范围之内。 1、基于googleMap中算法得到两经纬度之间距离,计算精度与谷歌地图距离精度差不多。...() /** * 计算中心经纬度与目标经纬度距离() * * @param centerLon * 中心精度 * @param centerLat * 中心纬度 * @param targetLon...:” + dist + ” ”); System.out.println(“2.两点相距:” + dist2 + ” ”); } 其中:1.两点相距:14.0 2.两点相距:15.924338550347233... 由此可见,这两种方法误差都不算大,如此java就能计算出两个经纬度直接距离,也就满足了需求!

    1.5K20

    java计算两个经纬度之间距离

    实现方式还是比较简单,首先用户在APP上开启定位权限,将自己经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内所有用户。...那么,如何java如何计算两个经纬度之间距离呢?有两种方法,误差都在接受范围之内。 1、基于googleMap中算法得到两经纬度之间距离,计算精度与谷歌地图距离精度差不多。...() /** * 计算中心经纬度与目标经纬度距离) * * @param centerLon * 中心精度 * @param...:" + dist + " "); System.out.println("2.两点相距:" + dist2 + " "); } 其中:1.两点相距:14.0 2.两点相距...:15.924338550347233 由此可见,这两种方法误差都不算大,如此java就能计算出两个经纬度直接距离,也就满足了需求!

    2.9K93

    java计算两个经纬度之间距离

    实现方式还是比较简单,首先用户在APP上开启定位权限,将自己经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内所有用户。...那么,如何java如何计算两个经纬度之间距离呢?有两种方法,误差都在接受范围之内。 1、基于googleMap中算法得到两经纬度之间距离,计算精度与谷歌地图距离精度差不多。...() /** * 计算中心经纬度与目标经纬度距离) * * @param centerLon * 中心精度 * @...:" + dist + " "); System.out.println("2.两点相距:" + dist2 + " "); } 其中:1.两点相距:14.0 2.两点相距...:15.924338550347233 由此可见,这两种方法误差都不算大,如此java就能计算出两个经纬度直接距离,也就满足了需求!

    9.8K20

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

    1秒误差就是几米样子。GPS车友可以用上述方法换算成自己需要单位坐标。 ##经纬度换算成 纬度分为60分,每一分再分为60秒以及秒小数。...平均: 纬度1度 = 大约111km 纬度1分 = 大约1.85km 纬度1秒 = 大约30.9m 根据地球上任意两点经纬度计算两点距离 ---- 地球是一个近乎标准椭球体,它赤道半径为...如果以0度经线为基 准,那么根据地球表面任意两点经纬度就可以计算出这两点地表距离(这里忽略地球表面地形对计算带来误差,仅仅是理论上估算值)。...,然 后再根据这些经纬度来计算彼此距离,从而估算出某些群体之间大致距离范围(比如酒店旅客分布范围-各个旅客邮政编码对应经纬度和酒店经纬度所 计算距离范围-等等),所以,通过邮政编码查询经纬度这样一个数据库是一个很有用资源...如果以0度经线为基 准,那么根据地球表面任意两点经纬度就可以计算出这两点地表距离 (这里忽略地球表面地形对计算带来误差,仅仅是理论上估算值)。

    2.2K20

    python练习题(3)——地球数据计算

    现将绳子延长1,仍围绕地球赤道一周,假设绳子与地球表面间空隙均匀,计算绳子与地球之间空隙大小。...:{:.2f}千".format(k))#绳子与地球之间空隙大小 题目:计算地球上两点之间距离 假设地球是一个完美的球体,给定两点经纬度坐标,计算它们之间距离。...我们可以使用地球平均半径约为6371公里来简化问题。 例如,给定点A(纬度:40.7128,经度:-74.0060)和点B(纬度:34.0522,经度:-118.2437),计算它们之间距离。...实现思路: 要计算地球上两点之间距离,我们可以使用球面三角法计算。首先,我们需要将经纬度转换为弧度,然后使用球面三角函数来计算两点之间距离。...lat2, lon2 = 34.0522, -118.2437 distance = distance_between_points(lat1, lon1, lat2, lon2) print("点A和点B之间距离

    54910

    经纬度转换-----度分秒以及经纬度

    1秒误差就是几米样子。GPS车友可以用上述方法换算成自己需要单位坐标。 经纬度换算成 纬度分为60分,每一分再分为60秒以及秒小数。...纬度数值在0至30度之间地区称为低纬地区,纬度数值在30至60度之间地区称为中纬地区,纬度数值在60至90度之间地区称为高纬地区。 赤道、南回归线、北回归线、南极圈和北极圈是特殊纬线。...根据两点计算距离 球面上任意两点之间距离计算公式可以参考维基百科上下述文章。..., 而两点距离很短时(比如地球表面上相距几百两点),余弦函数会得出0.999...结果, 会导致较大舍入误差。...根据2个经纬度坐标,距离计算函数 var getDistance = function(p1, p2) {   //角度转换为弧度 var getRad = function(d) {

    10.4K70

    Redis GeoHash核心原理解析

    一提到索引,大家脑子里马上浮现出B树索引,因为大量数据库(MySQL、oracle、PostgreSQL等)都在使用B树。...如下两个图所示,第一个在城区,第二个在郊区,城区GeoHash字符串之间比较相似,郊区字符串之间也比较相似,而城区和郊区GeoHash字符串相似程度要低些。 ? ?...一、经纬度距离换算 在纬度相等情况下: 经度每隔0.00001度,距离相差约1; 每隔0.0001度,距离相差约10; 每隔0.001度,距离相差约100; 每隔0.01度,距离相差约1000...在经度相等情况下: 纬度每隔0.00001度,距离相差约1.1; 每隔0.0001度,距离相差约11; 每隔0.001度,距离相差约111; 每隔0.01度,距离相差约1113; 每隔0.1度...插句题外话,计算经纬度之间距离不能像求欧式距离那样平方开根号,因为地球是个不规整球体(图2a),普通计算适合都是默认按最简单完美球体假设,两点之间距离函数应该如图2b所示。 ?

    1.5K20

    GIS数据漫谈(六)— 投影坐标系统

    地“球”被投影到“平面”后,还有一个最实际功能就是便于测量。因为投影后坐标都是在直角平面坐标系下坐标了(单位一般为)。比如计算两点距离,直接用勾股定理即可。...已知球面上两点经纬度也是可以计算距离,准确说是大圆(GreatCircle)距离,后面我们还会提到一般采用 Haversine 公式。...也因为正球体简化,导致Web墨卡托并非和标准墨卡托投影一样保持严格等角(Conformal),而是近似等角。那等角到底是什么意思呢?比如下图中已知莫斯科、广州两点经纬度。...这条大圆(Greate Circle)即为球面上两点最短距离。那我们在墨卡托投影平面上连接投影后两点得到直线(如下图蓝线)又是什么呢?...这条蓝线与各个经线(绿色)夹角是不变,在这个例子中约为119.6°。这条线就叫做等角航线(rhumb line)也称恒向线,即地球上两点之间与经线处处保持角度相等(等方位)曲线。

    1.3K10

    GPS 工作原理

    简单来说,就是通过在不同位置测量卫星和接收器之间距离,从而确定接收器位置。 GPS系统由一组在地球轨道上均匀分布卫星组成。...a、如果只有一颗卫星测出来距离做参考,则所在位置可以是红圈内任意一点; b、如果有两颗卫星所测出距离做参数,则在所在位置可以是红、蓝两个圈上相交两点其中一点,可以是P,或是X; c、一旦有齐三颗卫星所测出来距离做参数时...载波相位测量 通过测量从GPS卫星发射原始载波相位到待测设备接收载波相位之差,得到载波传输距离。和测试伪距原理一样计算待测点和卫星之间距离,利用多个方程式计算待测点XYZ坐标。...接收机位置解析原理 测量出已知位置卫星到用户接收机之间距离,然后综合多颗卫星数据就可知道接收机具体位置。...坐标框架:最后,通过将观测结果与国家或国际坐标参考框架(WGS84)进行匹配,可以得到基准站在该框架下精确经纬度坐标。

    22110

    Redis | Redis 也会算距离

    对应上面的命令可以看出,pos 是 geoadd key,在 pos 后是经纬度坐标,在经纬度坐标后面是该经纬度坐标自定义名称。...三、计算距离 接下来这个命令可以在业务场景中使用,geodist 用来计算两个元素之间距离。在计算距离时候,可以指定距离单位,比如 或 千。...通过 geodist 就可以方便得出两点之间距离了。 四、获取附近信息 获取附近信息有两个命令,分别是 georadiusbymember 和 georadius 命令。...如果想要知道它们之间具体距离是多远,可以增加参数 withdist,命令如下: 127.0.0.1:6379> georadiusbymember pos nanzhan 10 km withdist...nanzhan" 2) "0.0000" 2) 1) "qingchuang" 2) "5.7133" 3) 1) "yingzepark" 2) "8.3599" 这样可以看到距离每个元素之间具体距离

    73030

    美团如何查询附近商家

    我们当前经纬度,可以从wifi或者手机GPS获取。 计算距离 接下来我们计算两点距离。...地球是一个近乎标准椭球体,它赤道半径为6378.140千,极半径为6356.755千,平均半径6371.004千。如果我们假设地球是一个完美的球体,那么它半径就是地球平均半径,记为R。...如果以0度经线为基准,那么根据地球表面任意两点经纬度就可以计算出这两点地表距离(这里忽略地球表面地形对计算带来误差,仅仅是理论上估算值)。...(相对地球半径而言),我们就可以把他们近似看成平面上两点,可以用下面的公式计算距离: ?...也就是说,8个32位数字 对应 8*5=40个二进制数,也就是经纬度分别划20次,就可以达到19精细度。

    5.2K20

    微信小程序----地理围栏实现员工防作弊地图打卡功能

    ,防止员工作弊打卡 实现步骤 地图选点插件引入实现小程序地图选点功能 这个很简单,腾讯官方有详细接入步骤,通过此步骤我们可以获取到员工选点经纬度 latitude longitude 获取用户的当前定位...lat1:res.latitude, lng1:res.longitude, }) } }) 调用此方法获取用户当前真实位置经纬度...lat1 lng1 根据经纬度计算真实位置和地图选点打卡位置直线距离 distance方法:返回两点之间直线距离(单位:km) //计算两点之间距离 export function juli(...500半径范围。...设置distance方法返回距离小于等于0.5即可 完整代码 //计算地图地位点和自己真实位置距离 if (Number(juli(this.data.lat1, this.data.lng1

    1.6K30
    领券