Пример #1
0
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)
Пример #2
0
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'
Пример #3
0
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
Пример #4
0
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)
Пример #5
0
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)