调用高德API实现数据可视化

微信搜索『coder-home』,或者扫一扫右侧的二维码,关注『程序猿集锦』。
了解更多干货分享,还有各类视频教程。
扫描它,带走我。

背景

前几天微信群聊的同学弄了一个什么群接龙(微信小程序),大概的目的就是统计一下同学大家目前都是哪个省份、那个城市、从事什么类型的工作,现在的住址、联系方式是什么。大家都很积极的填写完成后,只能由群接龙发起者登录到后端下载大家填写好的excle表格。然后做了些简单的统计汇总。然后把这个excle发到了群里供大家参阅。

这时候,有些同学说这样不错。但是可惜看不到具体的地理位置,能否和疫情分布图一些,把这些信息在地图上展示出来。于是,我就想这个该怎么实现呢?网上查阅了一些资料之后,就动手走了一个demo。接下来分享一下具体的实现过程。

收集信息

这里可以不使用小程序,可以使用一个什么云文档之类的,提供大家可以同时在线编辑的。任选一个就可以了。选择之后,让大家都可以打开,群里的同学都把各自的信息填写到这个Excel中。excle的列大概有如下几个列,下面举例展示一下这个excle的格式。

序号姓名手机号省份城市行业详细住址
1建国15911112222广东省广州IT广东省广州市XXXX街道XX小区
2翠花18800001111北京市北京保险北京市东城区XXXX大街XX公寓

如何获取经纬度

在收集完同学填写好的信息之后,做一些简单的清洗数据。我们要想在地上展示数据,最重要的是什么?是要获取数据中对应的经纬度,有了经纬度的信息,才可以把这些信息在地上一个一个展示出来。

问题:我们怎么获取这些数据的经纬度呢?

从上面的示例数据中可以看出,我们要想在地图上展示这些数据,就要把每一行数据都打上经纬度的标记。而数据中的详细地址这一列,正好可以在地图上对一个个点的位置。所以,我们可以根据这个地址列,找到每一个地址列对应的经纬度,这样就可以把一行行数据,根据经纬度的值,在地图上以一个个点的方式呈现出来。

问题:怎么根据地址获取地址的经纬度呢?

高德API提供了一个“地理/逆地理编码”的服务:你给它传入一个地址,他给你返回这个地址的详细信息,其中就有这个地址对应的经纬度。如下是高德API的说明,可以根据下图中的位置看下具体的说明。高德开放平台的首页地址:https://lbs.amap.com/
在这里插入图片描述
在这里插入图片描述

下面是一个根据地址,获取经纬度的演示示例:你可以在这个页面中https://lbs.amap.com/api/webservice/guide/api/georegeo查看并运行这个示例:
在这里插入图片描述

注册高德开发者账号

要想使用高德地图的API,首先我们要注册一个个人的高德开发者账号。这个很简单,使用自己的手机号注册一个就可以了。注册完成后,有一些免费的调用量给我开发者测试使用。如果是要大批量的调用,则需要注册为企业账号。在注册之后需要提供企业的营业执照等资料才可以注册成功。此时对高德API的调用量会增加一些,但是也不会增加太多。如果还是不够用,那么只能购买高德的API接口的调用量。但是对于我们开发者测试来说,个人类型的高德开发者账号足够了。

注册的时候参考下面图片一步步填写信息,下一步就OK了。注册页面的地址为:https://lbs.amap.com/dev/id/choose
在这里插入图片描述

创建key

在我们注册完成高德开发者账号之后,我们并不能直接去调用高德的API接口,还需要基于我们注册的账号,在这个账号下面,创建一些key,而这些key就是你去调用高德API的钥匙。有了这些钥匙才可以真正的去调用高德的API接口,这些key需要在调用API接口的时候,作为一个参数传入进去,高德的后台用来识别是哪个账号在调用高德的API接口。

问题:如何创建key?

登录高德开发者账号之后,选择“应用”,然后“我的应用”,在右侧有“添加”选项,点击这个“添加”。
在这里插入图片描述

添加key的页面参考如下:
在这里插入图片描述

创建完成之后,把key值复制一下记录下来。待会调用高德API接口的时候,需要使用到。

获取经纬度

在我们有了开发者账号之后,也创建了key。接下来就是要处理我们的数据了。我们需要把每一个同学的住址,调用高德的API接口,然后获取每一个地址对应的经纬度。

推荐使用Python来处理Excel中的数据。把Excel中的数据读取成datafram,然后找到我们的地址所在的列,获取里面的地址,然后循环调取下面的获取经纬度的方法,就可以得到我们每一个地址对应的经纬度。

获取经纬度的方法,示例代码如下:它需要传入两个参数,第一个是我们的地址,第二个是我们在高德开发者账号中创建的key。它会返回一个经纬度。然后把这个返回的经纬度和地址一对一对应关联起来整合到从Excel中读取出来的dataframe中即可,在dataframe中增加一列“经纬度”,用于存放获取到的经纬度。然后把这个整合后的dataframe再生成一个新的Excel文件,这样就完成了经纬度的获取。

# https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>
# //restapi.amap.com/v3/geocode/geo?key=您的key&address=北京市朝阳区阜通东大街6号&city=北京
#调取高德api示例
import requests
from requests.exceptions import ReadTimeout, ConnectTimeout

# 根据地址获取经纬度
def getjingweidu(address,key):
    parameters = {'address':address,'key': key}
    base = 'https://restapi.amap.com/v3/geocode/geo'
#     base = 'https://restapi.amap.com/v3/config/district'
    loc = 0
    try:
        response = requests.get(base, parameters, timeout=2)
        if response.status_code == 200:
            answer = response.json()
#             print(answer)
            loc = answer["geocodes"][0]["location"]
        else:
            pass
    except (ReadTimeout, ConnectTimeout):
        pass
    return loce

我们手动调取一下这个方法,看下结果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LCw9Oj2a-1611756442988)(20210114-%E8%B0%83%E7%94%A8%E9%AB%98%E5%BE%B7API%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20210115145739942.png)]

创建数据可视化项目

有了包含经纬度的数据之后,数据最后的结果如下:

序号姓名手机号省份城市行业详细住址经纬度
1建国15911112222广东省广州IT广东省广州市XXXX街道XX小区113.934576,22.540487
2翠花18800001111北京市北京保险北京市东城区XXXX大街XX公寓103.932276,21.540487

处理后的数据截图如下:
在这里插入图片描述

数据准备好之后,我们开始做数据可视化的工作。在我们的高德开发者账号平台中,登录我们注册的账号,选择“数据可视化”菜单
在这里插入图片描述

进入如下界面
在这里插入图片描述

点击“数据管理”,添加数据,把我们准备好的Excel,上传上去。
在这里插入图片描述

上传Excel文件,如下所示:
在这里插入图片描述

现在,我们已经把数据上传上去了,接下来开始创建可视化项目:
在这里插入图片描述

选择我们上传的数据Excel数据文件:
在这里插入图片描述

然后在里面进行一些的选择性的配置操作,就是点点点,然后确定等等操作。就可以出现如下所示的效果图。
在这里插入图片描述

我们可以把这个数据库可视化的项目通过连接的方式分享给其他人查看,也可以把这它生成图片,也可以把它以连接的方式嵌入到我们的项目网页中。
在这里插入图片描述

数据可视化项目有很多类型,不仅可以创建这样的点,还可以创建点与点之间的连线,围栏信息图,人员分布热力图等等。下面贴几张图片供大家感受一下,效果还是很炫酷的。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8OfRvqKj-1611756443075)(20210114-%E8%B0%83%E7%94%A8%E9%AB%98%E5%BE%B7API%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20210115155202178.png)]

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wjEgR3HS-1611756443080)(20210114-%E8%B0%83%E7%94%A8%E9%AB%98%E5%BE%B7API%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20210115154631925.png)]

最后

这样,我们把一份Excel数据给可视化的展现了出来。其中的难点就是如果去分析我们的数据,观察我们的数据,哪些数据列可以和地图关联起来。我们这份数据中就是通过地址来找到这些地址的经纬度,然后才可以地图关联起来的。

希望这篇文章能够给你以后做类似的项目的时候带来一些启发。

微信搜索『coder-home』,或者扫一扫右侧的二维码,关注『程序猿集锦』。
了解更多干货分享,还有各类视频教程。
扫描它,带走我。
  • 7
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值