查看原文
其他

​快速计算两地距离——geodist命令介绍

爬虫俱乐部 Stata and Python数据分析 2022-03-15


:宁刘莹,中南财经政法大学金融学院

:赵冰洁

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营在不久前已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《StataPython》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!   

导读

  在之前的推文《轻松获取通行数据——cntraveltime命令介绍》里,我们介绍了用 cntraveltime 命令来获取两地之间的交通时间和交通路程,那么如果我们从地理的角度出发想要得到两地之间的直线距离该怎么做呢?根据中学的数学物理知识,在已知地球半径、两个地点的经纬度的情况下,列一个计算公式是可以计算出在地球表面两地之间的直线距离的,但列式子未免过于麻烦,这个由懒人驱动的世界就开发了一个命令—geodist—来帮助我们实现这个功能。给我几列经纬度数据,还你一份直线距离。

一、命令介绍

该命令的语法如下:
如果纬度/经度坐标是数值变量:
geodist lat1 lon1 lat2 lon2 [if] [in], generate(new_dist_var) [options]
该命令有这样几个选项:
(1)miles:指定以英里为单位报告距离;
(2)ellipsoid(a,f):自定义椭球体参数(a,f),a为一个椭球体的长半轴,f为短半轴,长半轴是地心到赤道的球半径长度,短半轴是地心到两级的球半径长度。这些是以米为单位的半长轴的长度(即到赤道的半径)和扁平率。具体的计算方法可参考: http://www.movable-type.co.uk/scripts/latlong-vincenty.html
(3)maxiter(#):表示执行计算椭圆距离时的最大迭代次数,默认值为25。请注意实际上所有情况都需要少于10次迭代;
(4)sphere:计算球体的大圆距离。默认地球近似为球体,其平均半径为6371公里。具体的计算方法可参考: http://www.movable-type.co.uk/scripts/latlong.html
(5)radius:在计算大圆距离时,指定球体的半径(以千米为单位)。

二、举例介绍

下面我们通过一个具体的例子来说明。首先要安装这个命令:

ssc install geodist

结合爬虫俱乐部之前开发的 cngcode 命令,我们先来得到中南财经政法大学和武汉大学的经纬度。首先输入两所学校的详细地址,包括省、市、区、校名:

clear all
input str100 fulladdr1 str100 fulladdr2
"湖北省武汉市洪山区中南财经政法大学南湖校区" "湖北省武汉市湖北省武汉市武昌区武汉大学"
end
list

接下来使用 cngcode 得到两个地点的经纬度:

cngcode, baidukey(your secret key) fulladdress(fulladdr1) lat(lat1) long(long1)
cngcode, baidukey(your secret key) fulladdress(fulladdr2) lat(lat2) long(long2)
list

然后就可以使用 geodist 用得到的经纬度获取两地之间的距离:

geodist lat1 long1 lat2 long2, gen(dist)
list

看到距离是7.2568235公里,与地图软件结果基本一致:

接下来我们用 cntraveltime 命令来看一下交通距离:

cntraveltime, baidukey(your secret key)  startlat(lat1)  startlng(long1) endlat(lat2)  endlng(long2) mode("car")
list

得到结果,以驾车为交通方式的路程为11103米,与苹果手机自带的地图软件对比也是基本一致的:

以上就是本文对 geodist 命令的介绍了,感兴趣的一起动手试试吧!





对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐
Seminar | CFO:努力影响财务信息环境吗?
Seminar | 企业层面成本加成的测算

朴素贝叶斯算法——以20Newsgroups数据集为例

【爬虫实战】利用scrapy框架爬取豆瓣图书信息

《我和我的家乡》影评高频词原来是这些!

一位大学党委书记的自我结束——风波里的学者本真

Seminar | JPX400指数的公司治理效应
Seminar | 企业社会责任披露如何影响企业绩效?
【爬虫实战】恒大的底气?--恒大楼盘数量爬取
Python遇上Stata--IPyStata介绍
变量类型转换之encode&decode命令
Seminar | 

Seminar | CEO

用词云图看Sustainability期刊热门题目

用Python把新婚祝福打满公屏!

震惊!知名数据分析软件竟被某度翻译“亲切称呼”为“斯塔塔”

喜临涛门,月满人圆

Python3.8新秀海象符成功出道
“合”我在一起—merge



Stata and Pythonstatapython

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存