python用经纬度画地图(Python高德地图指定区域经纬度数据抓取)
python用经纬度画地图(Python高德地图指定区域经纬度数据抓取)# 引如requess库 import requests # 下载数据 data = requests.get(url='http://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=东莞理工学院') # 导入json包 import json # 利用json包把上述字符串解析成Python字典 js = json.loads(data.text) # 将结果保存下来,进行下一步解析 points1 = js['data']['poi_list'][0]['bound'] points2 = js['data']['poi_list'][1]['bound'] # 用‘_’来分割这些点 会生成一个列表 point
在这里插入图片描述
@Author : Runsen
高德地图【东莞理工学院】
- 如下链接为从高德地图获取【东莞理工学院】这个区域边界经纬度坐标点的链接
https://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=东莞理工学院
- 可以发现,访问该链接返回的数据是以json格式存储的 如果直接存储返回的网页,那么默认保存格式应该为json
- 目标是将该json文件中区域边缘点的经纬度坐标提取出来
# 引如requess库
import requests
# 下载数据
data = requests.get(url='http://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=东莞理工学院')
data.text
# 导入json包
import json
# 利用json包把上述字符串解析成Python字典
js = json.loads(data.text)
在这里插入图片描述
# 再看嵌套的小字典data的keys
js['data'].keys()
dict_keys(['codepoint' 'code' 'suggestion' 'timestamp' 'lqii' 'is_general_search' 'result' 'keywords'
'message' 'total' 'busline_list' 'bus_list' 'general_flag' 'bounds' 'version' 'busline_count' 'magicbox_data' 'interior_count' 'poi_list'])
# 查看输出,我们知道区域边缘坐标点应该是保存在key = 'poi_list'对应的value中的,把它提取出来
js['data']['poi_list']
g
以下是全代码
# 引如requess库
import requests
# 下载数据
data = requests.get(url='http://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=东莞理工学院')
# 导入json包
import json
# 利用json包把上述字符串解析成Python字典
js = json.loads(data.text)
# 将结果保存下来,进行下一步解析
points1 = js['data']['poi_list'][0]['bound']
points2 = js['data']['poi_list'][1]['bound']
# 用‘_’来分割这些点 会生成一个列表
points= points1.split('_')
import pandas as pd
df = pd.DataFrame(points columns=['lat_lng'])
# 把经度解析出来
df['longitude'] = df['lat_lng'].apply(lambda s:s.split(' ')[0])
# 把纬度解析出来
df['latitude'] = df['lat_lng'].apply(lambda s:s.split(' ')[1])
# 删掉第一个字段
df = df.drop('lat_lng' axis = 1)
# 把数据保存到本地
df.to_csv('./data/scau.csv' index = False)
现在试下抓取的数据 用的