高德API地址:

地理/逆地理编码:http://lbs.amap.com/api/webservice/guide/api/georegeo

坐标转换:http://lbs.amap.com/api/webservice/guide/api/convert

#!/usr/bin/env  
#-*- coding:utf-8 -*-  
''''' 
利用高德地图api实现经纬度与地址的批量转换 
'''  
import requests  
import pandas as pd  
import time  
import sys  
reload(sys)  
sys.setdefaultencoding("utf-8")  
 #需要批量获取的话,一般是从文件中读取数据
def parse():  
    datas = []  
    totalListData = pd.read_csv('locs.csv')  
    totalListDict = totalListData.to_dict('index')  
    for i in range(0, len(totalListDict)):  
        datas.append(str(totalListDict[i]['centroidx']) + ',' + str(totalListDict[i]['centroidy']))  
    return datas  
#坐标转换是一类简单的HTTP接口,能够将用户输入的非高德坐标(GPS坐标、mapbar坐标、baidu坐标)转换成高德坐标
def transform(location):  
    parameters = {'coordsys':'gps','locations': location, 'key': '7ec25a9c6716bb26f0d25e9fdfa012b8'}  
        base = 'http://restapi.amap.com/v3/assistant/coordinate/convert'  
        response = requests.get(base, parameters)  
        answer = response.json()  
        return answer['locations']  
 #我这里是将经纬度转换为地址,所以选用的是逆地理编码的接口。
def geocode(location):  
        parameters = {'location': location, 'key': '7ec25a9c6716bb26f0d25e9fdfa012b8'}  
        base = 'http://restapi.amap.com/v3/geocode/regeo'  
        response = requests.get(base, parameters)  
        answer = response.json()  
        return answer['regeocode']['addressComponent']['district'].encode('gbk','replace'),answer['regeocode']['formatted_address'].encode('gbk','replace')  
          
if __name__=='__main__':  
    i = 0  
    count = 0  
    df = pd.DataFrame(columns=['location','detail'])  
    #locations = parse(item)  
    locations = parse()  
    for location in locations:  
        dist, detail = geocode(transform(location))  
        df.loc[i] = [dist, detail]  
        i = i + 1  
    df.to_csv('locdetail.csv', index =False)