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

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

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

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

内容概要:本文系统梳理了计算机组成原理的完整知识体系,重点围绕冯·诺依曼体系结构、五大核心硬件(运算器、控制器、存储器、输入/输出设备)、数据表示与运算、存储层级、CPU架构、总线系统及I/O控制机制展开,深入剖析了硬件底层如何支撑Java程序的运行,特别是与JVM内存模型、多线程并发、IO操作、性能调优等关键技术的紧密关联。文章强调通过理解二进制编码、补码运算、缓存机制、指令流水线、乱序执行、中断与DMA等底层原理,帮助Java开发者从根本上解释浮点精度丢失、数值溢出、线程安全、伪共享、IO阻塞等常见问题,并提供性能优化的硬件级视角。; 适合人群:具备一定Java开发基础,工作1-3年,希望深入理解JVM、并发编程、IO模型底层原理的后端研发人员。; 使用场景及目标:① 理解Java代码从编译到执行的完整软硬件链路;② 掌握JVM内存布局、GC机制、线程上下文切换、volatile与synchronized的硬件实现原理;③ 分析并解决高并发、高性能场景下的性能瓶颈,如缓存命中率低、伪共享、总线争用、IO阻塞等问题;④ 在面试中清晰阐述Java底层与计算机硬件的关联,展现扎实的系统功底。; 阅读建议:建议按照文档提供的“八、学习顺序”分阶段学习,每学完一个硬件模块,立即结合对应的Java技术点(如学到Cache时思考伪共享和@Contended)进行复盘,将抽象硬件原理具象化到日常开发场景中,以达到学以致用的目的。
源码链接: https://pan.quark.cn/s/044c82337b8e Teamcenter 12的中文版帮助文档中,1-1基础模块入门部分,详细介绍了产品设计、产品文档、产品结构、业务流程、客户端与集成接口、AWC、Rich client以及TC的安装与配置等内容,非常适合初学者或者希望了解Teamcenter 12的读者。Teamcenter 12是由Siemens开发的一款功能强大的产品生命周期管理(PLM)软件,它包含了产品设计、产品文档、产品结构、业务流程等多个领域,旨在帮助企业高效地管理产品开发的全过程。以下是对这些核心知识点的具体阐述: 1-1 Teamcenter简介: Teamcenter作为一个综合性的PLM解决方案,提供了一个集中化的平台来存储、管理和协同所有的产品相关信息。它支持跨部门、跨地域的合作,通过集成CAD系统、业务流程管理工具和数据管理功能,确保了数据的一致性和准确性。 1-1 产品设计: Teamcenter能够管理各种工程设计数据,包括3D模型、图纸、参数化数据等。用户可以方便地查找和组织产品设计数据,进行签出和签入操作以保证版本控制,确保在团队协作中避免数据冲突。 1-2 查找和组织产品设计: 在Teamcenter中,用户可以通过高级搜索功能迅速定位所需的设计文件,同时,系统支持自定义视图和分类,使设计数据的组织更加系统化。 1-3 签出和签入产品设计: 签出和签入机制是Teamcenter中防止数据冲突的重要功能。签出允许用户独占性地编辑某个设计文件,而签入则将更新后的文件版本提交回系统,供其他团队成员查看或编辑。 1-4 产品文档: Teamcenter不仅管理设计数据,还涵盖了产品相关的文档,如规格...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在电磁模拟技术中,CST(Computer Simulation Technology)是一种被广泛采纳的软件工具,它主要用于电磁场、微波、天线以及射频系统的设计工作。本资料将详细分析CST软件中离散端口的具体配置方法,这些方法对于提升仿真结果的精确度和专业水准具有决定性作用。离散端口在CST软件中扮演着模拟信号输入或输出的重要角色,它们构成了仿真模型不可或缺的部分。在配置离散端口时,一个核心的原则是保证端口的方向与网格线保持一致,这是因为这样做能够有效降低计算过程中产生的误差,并确保仿真数据的有效性。如果未能遵循这一指导原则,可能会引发未知的计算问题,进而导致仿真结果失去可靠性。 在CST软件中配置离散端口,通常需要借助“Pick Points”这一功能。通过选择“Pick Edge Center”选项,端口将被设定在模型边缘的中心位置上。然而,这种做法并不总是能够确保端口与网格线保持平行。在某些特定情形下,模型的几何构造可能不允许直接选取一个与网格线平行的边作为端口的安装位置。 为了克服这一挑战,可以采用多种不同的策略。如果模型本身已经包含一条与馈电口平行的边,那么可以直接利用这条边来建立端口,此时CST软件会自动调整端口使其与网格线对齐。另一种可选的方法是,当模型不具备现成的平行边时,用户可以手动构建一个几何结构,比如一个立方体,并使其边缘与馈电口平行。通过这种方式,新建立的几何结构的边缘就可以作为端口的位置,从而确保端口与网格线的平行关系。 在实施上述操作时,必须关注端口尺寸的合理性和物理意义的一致性。端口的尺寸应当依据实际天线馈电部分的尺寸进行适当调整,过大的端口或...
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值