一、摘要
本文主要分为两大步骤,一是Python调用高德地图API,获取已知地名的经纬度,二是使用高德地图可视化平台上实现一键式地图可视化,实现呈现效果如图,对部分开发商项目信息进行显示(数据来源房天下网站):
文章主要参考官方文档和文章Python调用高德地图API实现经纬度换算、地图可视化。
二、获取已知地名的经纬度
首先需要在https://lbs.amap.com/上注册,建立项目,生成Key,具体可参照第一部分的参考文章。地理编码/逆地理编码 API 是通过 HTTP/HTTPS 协议访问远程服务的接口,提供结构化地址与经纬度之间的相互转化的能力。地理编码 API 服务地址
https://restapi.amap.com/v3/geocode/geo?parameters
parameters代表的参数包括必填参数和可选参数,这个免费用户一天调用5000次,大规模的服务是要收费的。所有参数均使用和号字符(&)进行分隔。具体代码:
import pandas as pd
import requests
from requests.exceptions import ReadTimeout, ConnectTimeout
import csv
def transform(geo):
parameters = {'address': geo, 'key': '填写自己申请的Key'}
base = 'https://restapi.amap.com/v3/geocode/geo'
loc = 0
try:
response = requests.get(base, parameters, timeout=2)
if response.status_code == 200:
answer = response.json()
loc = answer['geocodes'][0]
loc1 = loc['location']
else:
pass
except (ReadTimeout, ConnectTimeout):
pass
return loc1
if __name__ == "__main__":
loc_data = pd.read_csv("dichan1.csv")
raw_loc = '西安市' + loc_data["address"]
with open("dichan2.csv", "a", newline='') as csvfile:
writer = csv.writer(csvfile)
i = j =0
for item in raw_loc[j:]:
if isinstance(raw_loc[i + j], str):
print([item, transform(item)])
#writer.writerow([item, transform(item)])
else:
writer.writerow([raw_loc[i+j], 0])
i = i + 1
输出如下:
输出.PNG
此处要注意读取CSV文件可能编码的问题,解决方案:用python3读csv文件,出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid con。
三、地图可视化
按照“数据可视化”,“创建可视化项目”,“上传数据”的流程进行创建。
流程.PNG
根据系统提示,选择自己需求进行构建。
数据可视化.PNG
最终效果为开篇的图。
网友评论