通过高德API实现数据的可视化

通过高德API实现数据的可视化关注我 程序猿集锦 获取更多分享资料

欢迎大家来到IT世界,在知识的湖畔探索吧!

关注我「程序猿集锦」,获取更多分享资料。

  • 背景
  • 收集信息
  • 如何获取经纬度
  • 注册高德开发者账号
  • 创建key
  • 获取经纬度
  • 创建数据可视化项目
  • 最后

背景

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

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

收集信息

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

通过高德API实现数据的可视化

欢迎大家来到IT世界,在知识的湖畔探索吧!

如何获取经纬度

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

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

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

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

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

通过高德API实现数据的可视化

通过高德API实现数据的可视化

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

通过高德API实现数据的可视化

注册高德开发者账号

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

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

通过高德API实现数据的可视化

创建key

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

问题:如何创建key?

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

通过高德API实现数据的可视化

添加key的页面参考如下:

通过高德API实现数据的可视化

创建完成之后,把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 

欢迎大家来到IT世界,在知识的湖畔探索吧!

我们手动调取一下这个方法,看下结果如下:

通过高德API实现数据的可视化

创建数据可视化项目

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

通过高德API实现数据的可视化

处理后的数据截图如下:

通过高德API实现数据的可视化

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

通过高德API实现数据的可视化

进入如下界面

通过高德API实现数据的可视化

点击“数据管理”,添加数据,把我们准备好的Excel,上传上去。

通过高德API实现数据的可视化

上传Excel文件,如下所示:

通过高德API实现数据的可视化

现在,我们已经把数据上传上去了,接下来开始创建可视化项目:

通过高德API实现数据的可视化

选择我们上传的数据Excel数据文件:

通过高德API实现数据的可视化

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

通过高德API实现数据的可视化

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

通过高德API实现数据的可视化

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

通过高德API实现数据的可视化

通过高德API实现数据的可视化

通过高德API实现数据的可视化

通过高德API实现数据的可视化

通过高德API实现数据的可视化

通过高德API实现数据的可视化

最后

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

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/122028.html

(0)
上一篇 44分钟前
下一篇 22分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信