使用Python编程根据地址输出地址+经纬度(笔记)

第一种方法:
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()
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值