基于Python3.6 +高德地图API的EXCEL文档中经纬度 逆地理编码的批量实现


实现目的:

  1. 为了方便工作中excel 数据的操作,大幅度提高工作效率,想到了用Python3 实现excel数据的批量读取与写入

  2. 工作中经常用到经纬度转换成具体的地址,手动在网站上查找并写入excel中需要消耗大量的时间



    涉及知识点:

  3. Python3 的Excel 数据读、写、追加,包括了xlrd, xlwt, openpyxl这三个库的操作,特别是openpyxl这个库的使用

  4. 地图API调用

  5. requests 库的使用


    实现代码及注释如下所示:

    所用到的key,均来自于高德地图开发平台的应用申请


  6. # coding=utf8
    import requests
    import openpyxl
    
    result = []
    book = openpyxl.load_workbook("XXXXXXXX(某Excel).xlsx")
    mysheet = book['18年1期']
    dat = []
    data1 = []
    data2 = []
    for col in list(mysheet.columns)[6:7]:
        for row in col:
            data1.append(row.value)
    for col in list(mysheet.columns)[7:8]:
        for row in col:
            data2.append(row.value)
    for k in range(len(data1)):
        Location = str(data1[k])+','+str(data2[k])
        dat.append(Location)
    dat.pop(0)
    ''' 使用xlrd 读取的方式
    Locations1 = list(mysheet.get_rows())
    dat=[]
    result = []
    C = range(mysheet.nrows)
    print(C)
    for k in range(mysheet.nrows):
        cells = mysheet.row_values(k)
        data1 = cells[6]
        data2 = cells[7]
        Location = str(data1)+','+str(data2)
        dat.append(Location)
    print(dat)
    dat.pop(0)
    print(dat[0])
    print(type(dat[0]))
    print(len(dat))
    '''
    #for i in range(len(dat)):
        #print(dat[i])
    #Locations2 = list(mysheet.get_rows('纬度'))
    #print(type(Locations1))
    #print(Locations1)
    
    for i in range(len(dat)):
        #P = {'location': dat[0],'key': '我在高德申请的key'}
        if dat[i]!= 'None,None':
            P = {'coordsys':'gps','locations': dat[i] ,'key': '我在高德申请的key'}
            url='https://restapi.amap.com/v3/assistant/coordinate/convert?'#经纬度转换成高德地图的经纬度格式
            #url = 'http://restapi.amap.com/v3/geocode/regeo'
            response1 = requests.get(url,P)
            answer1 = response1.json()
            #print(answer1)
            a = answer1.get('locations')
             # print(a)
            parameters = {'location': a, 'key': '我在高德申请的key'}
            #parameters_1 = {'city':110101,'key': '我在高德申请的key'}//天气查询
            base1 = 'http://restapi.amap.com/v3/geocode/regeo'
            #base2 = 'https://restapi.amap.com/v3/weather/weatherInfo?'
            response2 = requests.get(base1, parameters)#根据经纬度查询地址
            #response3 = requests.get(base2, parameters_1)
            answer2 = response2.json()
            #answer3 = response3.json()
           # print(answer2)
            #print(answer3)
            b=answer2.get('regeocode')
            #print(b)
            c=b.get('formatted_address')#提取该地点的地址
           # print(c)
        else:
            c = '未知'
        result.append(c)
        print(i)
    for i in range(len(result)):
        mysheet.cell(row=(i+2),column=42).value=str(result[i])
    book.save('2018年新建工程台账.xlsx')

    基于Python3.6 +高德地图API的EXCEL文档中经纬度 逆地理编码的批量实现_第1张图片 ZW地址列为查询结果

     

你可能感兴趣的:(星路历程)