第一种方法: import numpy as np import xlrd import pandas as pd import pandas as pd ##############根据地址输出地址+经纬度 # 导入库 import requests,json import xlsxwriter ###############读入地址 ------转成数组格式-------------根据高德API接口输出经纬度 # 定义变量 KEY = '高德地图申请的key' \ '' #此处填入你申请的key URL_geocode = 'https://restapi.amap.com/v3/geocode/geo?' # 获取经纬度 #######地址后面不能带#等特使字符否则会出错。 def gain_location(address): api_url = f'{URL_geocode}city=邯郸市&address={address}&key={KEY}&output=json&callback=showLocation' #此处城市名可更改 r = requests.get(api_url) r = r.text r = r.strip('showLocation(') r = r.strip(')') jsonData = json.loads(r)['geocodes'][0]['location'] return jsonData # 返回信息 def get_place_info(address): place_info = [] for place in address: place_point = [] place_point.append(place) location = gain_location(place) print(place,location) place_point.append(location) place_info.append(place_point) return place_info def excel_one_line_to_list(): df = pd.read_excel(r'路径/文件名.xlsx', usecols=[0], names=None) # 读取项目名称列,不要列名 df_li = df.values.tolist() arr = [] for s_li in df_li: arr.append(s_li[0]) return arr if __name__ == '__main__': adr=excel_one_line_to_list() # 自定义地址内容 # address = input().split() #此处表示可以输入以空格相隔的地址 # 也可以直接写成 address = ['地点1','地点2','地点3'] 的形式 address = adr result = get_place_info(adr) # 写入excel book = xlsxwriter.Workbook(r'路径/文件名.xlsx') # 填写创建的excel表的存储地址及表名 sheet = book.add_worksheet() col = ('place', 'location') for i in range(0, 2): sheet.write(0, i, col[i]) for i in range(0, len(adr)): for j in range(0, 2): sheet.write(i + 1, j, result[i][j]) book.close()
第二种方法:
import numpy as np import xlrd import pandas as pd import pandas as pd # 导入库 import requests,json import xlsxwriter ####################3将地址转成经纬度 KEY = '高德地图申请的KEY' #此处填入你申请的key URL_geocode = 'https://restapi.amap.com/v3/geocode/geo?' # 获取经纬度 ####requests.get(url, params) request会自动处理编码问题 def getlnglat(address): url='https://restapi.amap.com/v3/geocode/geo' params = {'key':KEY, 'address':address} res = requests.get(url, params) json_data = json.loads(res.text) jsonData=json_data['geocodes'][0]['location']#获取经纬度 #print(jsonData) return jsonData # 返回信息 def get_place_info(address): place_info = [] for place in address: place_point = [] place_point.append(place) #print(place_point) location = getlnglat(place) print(place,location) place_point.append(location) place_info.append(place_point) return place_info def excel_one_line_to_list(): df = pd.read_excel(r'路径\文件名.xlsx', usecols=[0], names=None) # 读取项目名称列,不要列名 df_li = df.values.tolist() arr = [] for s_li in df_li: arr.append(s_li[0]) return arr if __name__ == '__main__': adr=excel_one_line_to_list() # 自定义地址内容 # address = input().split() #此处表示可以输入以空格相隔的地址 # 也可以直接写成 address = ['地点1','地点2','地点3'] 的形式 address = adr result = get_place_info(adr) # 写入excel book = xlsxwriter.Workbook(r'路径\文件名.xlsx') # 填写创建的excel表的存储地址及表名 sheet = book.add_worksheet() col = ('place', 'location') for i in range(0, 2): sheet.write(0, i, col[i]) for i in range(0, len(adr)): for j in range(0, 2): sheet.write(i + 1, j, result[i][j]) book.close()