* Authors: * Chuntao Li, Ph.D. , China Stata Club(爬虫俱ä¹éƒ¨)(chtl@hust.edu.cn) * ZeYuan Guo , China Stata Club(爬虫俱ä¹éƒ¨)(guozeyuan4513@163.com) * Kong Meng, China Stata Club(爬虫俱ä¹éƒ¨)(mengkong147@163.com) * February 25th, 2023 * Program written by Dr. Chuntao Li, ZeYuan Guo and Kong Meng * Used to get information about keywords which you are interested in in the county-level city from Gaode Map API * Can only be used in Stata version 17.0 or above capture program drop cnpoi program define cnpoi version 17.0 if _caller() < 17.0 { disp as error "this is version `=_caller()' of Stata; it cannot run version 17.0 programs" exit 9 } syntax,gaodekey(string) city(string) [keywords(string) types(string) path(string)] clear all if "`path'" != "" { capture mkdir `"`path'"' disp `"`path'"' } else { local path `"`c(pwd)'"' } qui{ if `"`keywords'"' == "" & `"`types'"' == ""{ noisily di as error "error: must specify at least one option of keywords and types exit 198 } else if `"`keywords'"' != "" & `"`types'"' == ""{ local keywords1 = geturi("`keywords'") local types1 = "" } else if `"`types'"' != "" & `"`keywords'"' == ""{ local types1 = geturi("`types'") local keywords1= "" } else { local types1 = geturi("`types'") local keywords1= geturi("`keywords'") } local city1 = geturi("`city'") forvalues p = 1/20{ local url = "http://restapi.amap.com/v3/place/text?&keywords=`keywords1'&types=`types1'&city=`city1'&output=json&offset=20&page=`p'&key=`gaodekey'&extension=all" cap copy "`url'" temp.txt,replace clear set obs 1 gen v = fileread("temp.txt") if index(v,`""info":"INVALID_USER_KEY""'){ noisily di as error "error: please check your gaodekey" exit 198 } else if index(v,`""info":"USER_DAILY_QUERY_OVER_LIMIT""'){ noisily di as error "error: your gaodekey is over_limit" exit 198 } replace v = ustrregexra(v,"\r\n","") replace v = ustrregexra(v,"\s","") if index(v, `""count":"0""') { continue, break } split v, p(`""parent""') if index(v, `""count":"1""'){ gen v3 = `""pname":"1""cityname":"1""adname":"1""name":"1""address":"1""type":"1""location":"1""' } drop v v1 sxpose,clear gen pname = ustrregexs(1) if ustrregexm(_var1,`""pname":"(.*?)""') gen cityname = ustrregexs(1) if ustrregexm(_var1,`""cityname":"(.*?)""') gen adname = ustrregexs(1) if ustrregexm(_var1,`""adname":"(.*?)""') gen name = ustrregexs(1) if ustrregexm(_var1,`""name":"(.*?)""') gen address = ustrregexs(1) if ustrregexm(_var1,`""address":"(.*?)""') gen type = ustrregexs(1) if ustrregexm(_var1,`""type":"(.*?)""') gen location = ustrregexs(1) if ustrregexm(_var1,`""location":"(.*?)""') split location,p(",") drop _var1 location rename (location1 location2) (lon lat) format name %-30s format address %-50s format type %-50s compress save `"`path'/`city'`keywords'`types'`p'.dta"',replace } clear cd `"`path'"' local files: dir "." file `"`city'`keywords'`types'*.dta"' foreach file in `files' { append using `file' } duplicates drop label var pname çœä»½ label var cityname 地级市 label var adname 县级市或区 label var name åç§° label var address åœ°å€ label var type 类型 label var lon ç»åº¦ label var lat 纬度 } save `"`city'`keywords'`types'总和.dta"',replace cap erase temp.txt forvalues p=1/20{ cap erase `city'`keywords'`types'`p'.dta } end