我是靠谱客的博主 闪闪小熊猫,最近开发中收集的这篇文章主要介绍经纬度计算距离公式_获得中国大陆各地市间距离,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2eecd84631944829d11e7f49aae1ccf4.png

引言

组内大佬下达最高指示:“速获取中国大陆各地市间距离”。经过一晚上的心理建设和五分钟的思考,我想到了下面几种解决方案:

  1. 通过获取各个地市的经纬度,通过经纬度计算出各个地市之间的直线距离;
  2. 通过百度地图API获取从A地到B地的驾车规划路线的长度;
  3. 通过火车票网拿到两个地市之间的铁路里程;

下面依次论述各种方法的具体实现。

经纬度直接计算

百度地图开放平台提供了全国各城市中心点的经纬度,直接下载这个文件就能拿到所有城市中心的经纬度。直接下载的文件是一个压缩包,解压后得到一个txt后缀的文件,打开后不难发现它是伪json格式数据,简单处理后可以拿到所有城市中心的经纬度。

再参照下面这个问题的回答,可以很轻松地计算出两个地市之间的距离。

请问如何计算两个经纬度之间的距离?​www.zhihu.com

我将这种方法计算两地间距离的代码放到了我的Gitee仓库当中,感兴趣的老铁可以自行取阅。当然了,老铁们更想要的应该是计算结果,我也把它放到了仓库当中了。下文提到的所有算法和相应的计算结果也都一并放在了这个仓库当中了,不再赘述。

使用经纬度计算的地市间距离是一个纯粹的地理距离,是给东风快递用的距离。人与人之间的交流用的距离肯定不是这样的距离,比如说林芝到保山的经纬度距离是695公里,但是公路距离有1687公里,两者之间的差异是比较大的,这个是使用经纬度直接计算地市间距离时需要注意的一个点。

当然了,如果两地之间有直飞的飞机的话,经纬度距离和实际的距离还是非常相近的。

百度地图API获取驾车规划路线长度

百度地图开放平台提供了路线规划的API,具体提供的服务与帮助文档请查阅在线文档。简单来讲,这一套API返回的内容其实就是我们使用百度地图app导航时返回的内容,见下图:

0b5eb724505670ba8e469ff2fa47c9d3.png
使用百度地图app导航时返回的页面

百度地图app给我们返回了几条备选路线,以及每条路线的里程数、耗时和过路费的价格。百度地图API给我们返回的json数据也包括这些信息,见下图。百度地图API的输入是城市中心的经纬度,百度地图app使用的经纬度可能不是城市中心,所以两者之间在数值上会有一些细微的差距,但个人认为影响不大。

9128b2f7b6e434ef199f4043945f46ed.png
百度地图api返回的json格式数据,红色圈圈出来的内容是我们想要的数据

百度地图API在认证通过以后每天可以免费使用的限额是3万次(二十四点刷新限额)。但是有两个API可以满足我们的需求,分别是路线规划和轻量级路线规划,路线规划就是跟百度地图app一样可以返回多条规划路线,轻量级路线规划就只返回一条规划路线。本来我们就只要一条规划路线的数据,所以一天能够使用的免费限额是6万次,花两天时间绝对可以把我们想要的数据拿下来了。

我是在2020年8月28日写下这篇知乎专栏文章的,只要老铁距离这个时间足够远,那么你在gitee仓库里面拿到的数据就应该是全的。当然了,距离太远的话,可能会有一些新的线路出现了,数据就没有那么准确了,看老铁的权衡了。

火车票网获取铁路里程

大家可以上火车票网逛逛,熟悉一下这个网站,这里我就不花太多的功夫来介绍它了。它可以告诉我们两个火车站之间的里程数,使用这个数据可以用来衡量两个城市之间用铁路联系起来的距离。不过确实有的地方可能没有火车站,或者是网站建设的有问题,有很多地市两两之间的数据是拿不到了。

我在写下这篇知乎专栏文章的时候还没有开始动手写火车票网的爬虫,老铁可以持续关注gitee仓库的更新,没准哪一天,数据就全了呢。

小结

经纬度计算的城市距离可以看做是通过航空飞机联系到一起的距离,使用百度地图API计算的城市距离可以视为通过高速公路联系到一起的距离,使用火车票网获取到的铁路里程可以视为通过铁路联系到一起的距离。理论上来讲,这几个里程数据合并在一起就能够完美地解决城市间距离几何这个问题了。那在实践上呢?我们留待历史证明吧......

最后

以上就是闪闪小熊猫为你收集整理的经纬度计算距离公式_获得中国大陆各地市间距离的全部内容,希望文章能够帮你解决经纬度计算距离公式_获得中国大陆各地市间距离所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部