def getPosData(FaN): values = {} posResults = [] #数量的Results posResults.append([]) #纬度 posResults.append([]) #经度 posResults.append([]) #数量 global cityList global lat #当前纬度 global lng #当前经度 cityList = gp.getCityList() global ak #for oneCity in cityList: while len(cityList) > 0: global oneCity oneCity = cityList.pop() global maxLat, minLat, maxLng, minLng maxLat, minLat, maxLng, minLng = getRange(oneCity) latRange = int((maxLat - minLat) // disParam) lngRange = int((maxLng - minLng) // disParam) for i in range(0, latRange): for j in range(0, lngRange): lat = round(i * disParam + minLat, 3) lng = round(j * disParam + minLng, 3) values['query'] = FaN params = urllib.parse.urlencode(values) url = 'http://api.map.baidu.com/place/v2/search?'+ params+'&location='+str(lat)+','+str(lng)+\ '&radius=' + str(gp.getMetParam()) + '&output=json&ak='+ ak +'&page_size=20&page_num=0' posResults = waitRequest(url, posResults, FaN) if i * j % 100 == 0 and i != 0 and j != 0: #每100次存储一次数据 saveInCsv(posResults, FaN)
def getOriType(coordinate,facType): global codeDict global ak url = 'http://restapi.amap.com/v3/place/around?key='+ ak +'&location='+coordinate[0]+','+coordinate[1]+'&types='+ codeDict[facType] +'&radius='+str(gp.getMetParam())\ +'&offset=20&page=1&extensions=base' count = waitRequest(url) csv = glp.getFinalCsv() copy = csv.copy() typeName = copy[facType] t1 = int(typeName.quantile(1/5)) t2 = int(typeName.quantile(2/5)) t3 = int(typeName.quantile(3/5)) t4 = int(typeName.quantile(4/5)) t5 = int(typeName.quantile(5/5)) if count in range(0,t1+1): return 'type1' elif count in range(t1+1,t2+1): return 'type2' elif count in range(t2+1,t3+1): return 'type3' elif count in range(t3+1,t4+1): return 'type4' elif count in range(t4+1,t5+1): return 'type5'
def getKNNsample(coordinate,facType): global codeDict global ak leftFacEng,leftFacChi = ml.getleftFac() leftFacEng.remove(facType)#删除要搜索的type,然后搜索sample sample = [] oriType = getOriType(coordinate,facType) for each in leftFacEng: url = 'http://restapi.amap.com/v3/place/around?key='+ ak +'&location='+coordinate[0]+','+coordinate[1]+'&types='+ codeDict[each] +'&radius='+str(gp.getMetParam())\ +'&offset=20&page=1&extensions=base' sample.append(waitRequest(url)) return oriType,sample
def search(): global leftFacEng global leftFacChi global oriCsv global codeDict global ak i = -1 finalCsv = getFinalCsv() for each in leftFacEng: i = i + 1 #首先判断有否这个列 if each not in finalCsv.keys(): newList = [np.nan] * len(finalCsv) finalCsv[each] = newList for point, eachLat, eachLng in zip(range(0, len(oriCsv)), oriCsv['lat'], oriCsv['lng']): if pd.isnull(finalCsv[each][point]): #如果这个是空的才进行遍历 values = {} values['query'] = leftFacChi[i] params = urllib.parse.urlencode(values) #url = 'http://api.map.baidu.com/place/v2/search?'+ params+'&location='+str(eachLat)+','+str(eachLng)+\ # '&radius=' + str(gp.getMetParam()) + '&output=json&ak='+ ak +'&page_size=20&page_num=0' url = 'http://restapi.amap.com/v3/place/around?key='+ ak +'&location='+str(eachLat)+','+str(eachLng)+'&types='+ codeDict[each] +'&radius='+str(gp.getMetParam())\ +'&offset=20&page=1&extensions=base' #print(url) print(str(eachLat) + ',' + str(eachLng)) waitRequest(url, finalCsv, each, point) if point % 100 == 0 and point != 0 or point == len(oriCsv) - 1: saveInCsv(finalCsv, each, point)
def searchPoint(i, j): global posResults #当前结果集 global maxLat, minLat, maxLng, minLng global FaN #当前设备名称 global lat #当前纬度 global lng #当前经度 global ak values = {} lat = round(i * disParam + minLat, 3) lng = round(j * disParam + minLng, 3) values['query'] = FaN params = urllib.parse.urlencode(values) #url = 'http://api.map.baidu.com/place/v2/search?'+ params+'&location='+str(lat)+','+str(lng)+\ # '&radius=' + str(gp.getMetParam()) + '&output=json&ak='+ ak +'&page_size=20&page_num=0' url = 'http://restapi.amap.com/v3/place/around?key='+ ak +'&location='+str(lat)+','+str(lng)+'&types='+ gp.bankCode +'&radius='+str(gp.getMetParam())\ +'&offset=20&page=1&extensions=base' posResults = waitRequest(url) print((lat, lng)) if j % 100 == 0 and j != 0: #每100次存储一次数据 saveInCsv(posResults, FaN)