计算3个地理坐标点之间的夹角

火车地图搞了有半年了,在做火车地图的过程中,遇到了一个问题,就是由于火车站点的地理坐标是直接请求api拿到的,部分api返回的结果可能千差万别。所以我需要一个方法,来在地图显示的过程中,判断出某个站点的坐标有误,并上报到服务器端,从而便于我的修正。一个典型的站点错误如下面这张图片所示:

uploading-image-560783.png

我最开始的思路是计算站点之间的距离,然后根据两站点之间的到站时间算出速度,如果超出某个值,比如300km/h,就判断该站点中有错误。

但是这种方法适用于坐标差出去比较多的站点,对于坐标差别比较少的站点就无能为力了,所以接下来,我要提到第二种方法,就是计算站点夹角的方法。

从上图可以看出,错误的站点会形成一个很小的锐角,如果我们能计算出这个锐角的大小,问题就解决了。

那么问题可以描述如下:

有3个站点坐标P1,P2,P3,求角⦣P1P2P3的大小。

问题很简单,解出来不容易,因为高中所学的功夫,由于很长时间没有使用,基本已经忘完了。好在有搜索引擎,一番搜索之后,终于找到了一个方案,计算夹角可以分为下面两步:

  1. 将经纬度转换成笛卡尔坐标系下的值
  2. 利用向量求夹角
    θ=acos(v1⋅v2/||v
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值