让Stata完美牵手中国地图之cnmapsearch
本文作者:王玉婷,中南财经政法大学金融学院
文字编辑:李婷婷
技术总编:余术玲
爬虫俱乐部云端课程
我们之前的文章《定位神器——cngcode》给大家介绍了如何利用百度API获取指定中文地址的地理经纬度,我们今天郑重推荐的是同样由爬虫俱乐部倾力编写的、与之配套的cnmapsearch
命令。该命令的功能为:根据关键词搜索给定经纬度周边的兴趣点,返回兴趣点的名称、中文地址、距离、标签等。
该命令同样需要通过百度地图开放平台申请密钥,在推文《定位神器——cngcode》中已经介绍过申请步骤,在此不再赘述。cnmapsearch作为一个外部命令,其安装命令为:
local url "https://stata-club-1257787903.cos.ap-chengdu."
net install cnmapsearch,from("`url'myqcloud.com/cnmapsearch/") replace
2.语法
首先,我们来看看cnmapsearch的语法,系统地了解该命令的用法,其语法如下:
cnmapsearch,baidukey(s1) latitude(s2) longitude(s3) keyword(s4) [options]
该命令有四个必选项,分别是:
baidukey(s1):s1是在百度地图开放平台申请的访问密钥,用于获取百度地图数据的访问权限。
latitude(s2):s2是指定地点的
纬度
。longitude(s3):s3是指定地点的
经度
。keyword(s4):s4是需要查找的关键词。
cnmapsearch另有多个可选项,其中最常用的是:
radius(n):用于指定搜索半径,默认为2000,单位为米。
filter(s5):用于设置过滤条件,提高过滤精度。该项包括filter_type和filter_sort,前者有三个取值:hotel(宾馆)、cater(餐饮)和life(生活娱乐),后者是可选的,其取值为:distance、price等。使用时,例如写做:filter("hotel" "price")。
需要注意的是,除了radius的参数为数值类型外,其他选项的参数均为字符或字符型变量。
在实际使用中,我们常常先使用cngcode命令获取指定中文地址的地理经纬度,然后将该经纬度作为cnmapsearch命令的参数,就能非常方便地获取指定地址周边的兴趣点了。
3.案例
接下来,我们将通过一个简单的案例来演示cnmapsearch的使用。
本文写作之时适逢中南大开学,学校规定不允许提前返校,抢张火车票又犹如鲤鱼跃龙门,找家品质高大上、价格接地气还要尽可能靠近校区的酒店收留两晚就成为返校er的头等大事。
这可难不倒我爬虫俱乐部“张三丰”(bushi),说干就干。
第一步:用cngcode
获得经纬度,以“湖北省武汉市中南财经政法大学(南湖校区)”作为完整的中文地址,将返回的纬度和经度变量命名为zuel_lat和zuel_long。
clear all
set obs 1
gen address = "湖北省武汉市中南财经政法大学(南湖校区)"
local bdk RkwfPwjwfrn3P5XZoNKz7BScyor0nZvW
cngcode,baidukey(`bdk') fulladdress(address) ///
lat(zuel_lat) long(zuel_long)
运行结果如下图所示:
第二步:用cnmapsearch
命令搜索兴趣点,利用第一步中cngcode返回的经纬度作为参数,以“酒店”作为关键词搜索中南财经政法大学(南湖校区)周边1000米内的酒店。
第三步:对搜索结果进行整理,保留标签为“酒店”的观测值,删除对我们无用的变量,并按距离从近到远排序。
keep if strpos(tag,"酒店")
drop centerid-zuel_lat tag telephone
sort distance
那还是让返回的酒店都按星级排序,贵则贵矣,环境卫生还是有保证。诸君请看:
frame copy default hotel_level
cwf hotel_level
local bdk RkwfPwjwfrn3P5XZoNKz7BScyor0nZvW
cnmapsearch,baidukey(`bdk') ///
latitude(zuel_lat) longitude(zuel_long) ///
keyword("酒店") radius(1000) filter("hotel" "level")
keep if strpos(tag,"酒店")
drop centerid-zuel_lat tag telephone
星级最高的武汉金谷国际酒店距离校区仅740米,但拖着几十斤大行李的我真的一米也不想多走(实际是住不起),果然还是星级排名第二并且距离校区仅仅仅245米的武汉尚一特连锁酒店(光谷财大店)更合我心意。既然如此,决定了,去武汉尚一特连锁酒店(光谷财大店)预定吧(真的没有恰饭!!)。
o(╥﹏╥)o我还是随便住个小旅馆吧…
自然语言分析——利用NLTK进行文本预处理
寻找B站的最爱--8月B站全站榜爬虫
cnaddress命令——实现经纬度转换为中文地址
Python入门—Spyder的简单使用
追踪命令set trace on——解你燃眉之急
爬虫大杀器 | “手把手”教你配置Selenium
小白必看!Anaconda安装全攻略
用WordStat看中国日报新闻(二)
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。