python调用百度地图,通过经纬度定位

百度地图首先要申请开发者认证和ak,网址在这儿:
百度地图开放平台

然后创建项目,这里注意要选择浏览器端:
python调用百度地图,通过经纬度定位_第1张图片再找到web服务接口,根据经纬度定位的功能在逆地理编码中:
python调用百度地图,通过经纬度定位_第2张图片
来查看服务文档,默认返回的是json格式,json格式对于python来说也是非常容易处理的,记得导入json库就好。

发现城市在返回结果中的位置:
python调用百度地图,通过经纬度定位_第3张图片这样可以很快写代码了:

import requests
import json
import pandas as pd

# 读取数据
task = pd.read_excel('file')

# 定义相关函数
def get_row():
    row = task.iloc[i,:].to_list()
    return row


def get_coords(row):
	# 纬度在第1列(从0开始),精度在第二列
	# 拼接成调起url所需参数的格式
    coords = str(row[1]) + ',' + str(row[2])
    return coords


def get_city():
    response = requests.get(url)
    # 这里记得把返回内容的文本解析成python内置的dict格式
    result = json.loads(response.text)
    # ['result']必须是第一个
    city = result['result']['addressComponent']['city']
    return city

接下来按需求放入循环,得到各个经纬度点对应的城市,写入文件即可:
python调用百度地图,通过经纬度定位_第4张图片这里说一下pandas保存数据时的小技巧:

  • 这个案例中保存的城市名是中文,如果用一般的保存语句df.to_csv('file_name.csv'),那么用excel打开时中文是乱码,所以在这条语句后加一个参数df.to_csv('file_name.csv', encoding='utf_8_sig'),注意不是’utf-8’。这样保存时,excel就能正确显示中文了。
  • 另外,pandas经常会自动在第一列加一行从0开始的索引,如果我们不需要的话,同样在保存时加一个参数file.to_csv('file_name.csv', index=None)这样就只保存想要的有用数据了。

你可能感兴趣的:(学习笔记)