# 可视化位置数据  > 手绘笔记由 [Nitya Narasimhan](https://github.com/nitya) 提供。点击图片查看更大版本。 这段视频概述了 Azure Maps 与 IoT 的功能,这是本课将要讲解的服务。 [](https://www.youtube.com/watch?v=P5i2GFTtb2s) > 🎥 点击上方图片观看视频 ## 课前测验 [课前测验](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/25) ## 简介 在上一课中,你学习了如何从传感器获取 GPS 数据并使用无服务器代码将其保存到云端的存储容器中。现在,你将学习如何在 Azure 地图上可视化这些点。你将学习如何在网页上创建地图,了解 GeoJSON 数据格式,并使用它在地图上绘制所有捕获的 GPS 点。 本课内容包括: * [什么是数据可视化](../../../../../3-transport/lessons/3-visualize-location-data) * [地图服务](../../../../../3-transport/lessons/3-visualize-location-data) * [创建 Azure Maps 资源](../../../../../3-transport/lessons/3-visualize-location-data) * [在网页上显示地图](../../../../../3-transport/lessons/3-visualize-location-data) * [GeoJSON 格式](../../../../../3-transport/lessons/3-visualize-location-data) * [使用 GeoJSON 在地图上绘制 GPS 数据](../../../../../3-transport/lessons/3-visualize-location-data) > 💁 本课将涉及少量 HTML 和 JavaScript。如果你想了解更多关于使用 HTML 和 JavaScript 进行网页开发的内容,请查看 [Web development for beginners](https://github.com/microsoft/Web-Dev-For-Beginners)。 ## 什么是数据可视化 数据可视化,顾名思义,是通过视觉化的方式展示数据,使人类更容易理解。它通常与图表和图形相关,但实际上是任何以图像形式表示数据的方法,帮助人类更好地理解数据并做出决策。 举个简单的例子——在农场项目中,你捕获了土壤湿度数据。2021 年 6 月 1 日每小时捕获的土壤湿度数据表可能如下: | 日期 | 读数 | | ---------------- | ------: | | 01/06/2021 00:00 | 257 | | 01/06/2021 01:00 | 268 | | 01/06/2021 02:00 | 295 | | 01/06/2021 03:00 | 305 | | 01/06/2021 04:00 | 325 | | 01/06/2021 05:00 | 359 | | 01/06/2021 06:00 | 398 | | 01/06/2021 07:00 | 410 | | 01/06/2021 08:00 | 429 | | 01/06/2021 09:00 | 451 | | 01/06/2021 10:00 | 460 | | 01/06/2021 11:00 | 452 | | 01/06/2021 12:00 | 420 | | 01/06/2021 13:00 | 408 | | 01/06/2021 14:00 | 431 | | 01/06/2021 15:00 | 462 | | 01/06/2021 16:00 | 432 | | 01/06/2021 17:00 | 402 | | 01/06/2021 18:00 | 387 | | 01/06/2021 19:00 | 360 | | 01/06/2021 20:00 | 358 | | 01/06/2021 21:00 | 354 | | 01/06/2021 22:00 | 356 | | 01/06/2021 23:00 | 362 | 对于人类来说,理解这些数据可能很困难。这是一堆没有意义的数字。作为可视化这些数据的第一步,可以将其绘制成折线图:  进一步优化,可以添加一条线,表示当土壤湿度读数达到 450 时自动浇水系统启动的时间点:  这个图表可以快速显示土壤湿度水平以及浇水系统启动的时间点。 图表并不是唯一的可视化工具。追踪天气的 IoT 设备可以通过网页应用或移动应用使用符号来可视化天气状况,例如用云朵符号表示阴天,用雨云符号表示雨天等等。可视化数据的方法有很多种,有些严肃,有些有趣。 ✅ 想一想你见过的数据可视化方式。哪些方式最清晰,能让你最快做出决策? 最好的可视化方式能让人类快速做出决策。例如,显示工业机器各种读数的仪表墙很难处理,但当某些东西出问题时,一个闪烁的红灯可以让人快速做出决策。有时候,最好的可视化方式就是一个闪烁的灯! 在处理 GPS 数据时,最清晰的可视化方式是将数据绘制在地图上。例如,显示送货卡车的地图可以帮助加工厂的工作人员了解卡车的到达时间。如果这张地图不仅显示卡车当前位置,还显示卡车的货物信息,那么加工厂的工作人员可以提前计划——如果他们看到一辆冷藏卡车接近,他们就知道需要准备冷藏空间。 ## 地图服务 处理地图是一个有趣的练习,有许多地图服务可供选择,例如 Bing Maps、Leaflet、Open Street Maps 和 Google Maps。在本课中,你将学习 [Azure Maps](https://azure.microsoft.com/services/azure-maps/?WT.mc_id=academic-17441-jabenn) 以及如何使用它来显示你的 GPS 数据。  Azure Maps 是“一组地理空间服务和 SDK,使用最新的地图数据为网页和移动应用提供地理背景。”开发者可以使用这些工具创建美观、交互式的地图,这些地图可以提供推荐的交通路线、交通事故信息、室内导航、搜索功能、海拔信息、天气服务等。 ✅ 试试一些 [地图代码示例](https://docs.microsoft.com/samples/browse?WT.mc_id=academic-17441-jabenn&products=azure-maps) 你可以将地图显示为空白画布、瓦片、卫星图像、带有道路叠加的卫星图像、各种类型的灰度地图、带有阴影的地图以显示海拔、夜视地图以及高对比度地图。通过与 [Azure Event Grid](https://azure.microsoft.com/services/event-grid/?WT.mc_id=academic-17441-jabenn) 集成,你可以在地图上获得实时更新。你可以通过启用各种控件来控制地图的行为和外观,使地图对事件如缩放、拖动和点击做出反应。为了控制地图的外观,你可以添加包括气泡、线条、多边形、热图等的图层。选择哪种地图样式取决于你选择的 SDK。 你可以通过以下方式访问 Azure Maps API:[REST API](https://docs.microsoft.com/javascript/api/azure-maps-rest/?WT.mc_id=academic-17441-jabenn&view=azure-maps-typescript-latest)、[Web SDK](https://docs.microsoft.com/azure/azure-maps/how-to-use-map-control?WT.mc_id=academic-17441-jabenn) 或者如果你正在构建移动应用,可以使用 [Android SDK](https://docs.microsoft.com/azure/azure-maps/how-to-use-android-map-control-library?WT.mc_id=academic-17441-jabenn&pivots=programming-language-java-android)。 在本课中,你将使用 Web SDK 绘制地图并显示传感器的 GPS 位置路径。 ## 创建 Azure Maps 资源 第一步是创建一个 Azure Maps 账户。 ### 任务 - 创建 Azure Maps 资源 1. 在终端或命令提示符中运行以下命令,在你的 `gps-sensor` 资源组中创建一个 Azure Maps 资源: ```sh az maps account create --name gps-sensor \ --resource-group gps-sensor \ --accept-tos \ --sku S1 ``` 这将创建一个名为 `gps-sensor` 的 Azure Maps 资源。使用的层级是 `S1`,这是一个付费层级,包含一系列功能,但提供了大量免费的调用。 > 💁 要查看使用 Azure Maps 的费用,请访问 [Azure Maps 定价页面](https://azure.microsoft.com/pricing/details/azure-maps/?WT.mc_id=academic-17441-jabenn)。 1. 你需要一个地图资源的 API 密钥。使用以下命令获取该密钥: ```sh az maps account keys list --name gps-sensor \ --resource-group gps-sensor \ --output table ``` 复制 `PrimaryKey` 的值。 ## 在网页上显示地图 接下来,你可以在网页上显示地图。我们将使用一个 `html` 文件来构建一个小型网页应用;请注意,在生产或团队环境中,你的网页应用可能会有更多的组件。 ### 任务 - 在网页上显示地图 1. 在本地计算机的某个文件夹中创建一个名为 index.html 的文件。添加 HTML 标记以容纳地图: ```html
``` 地图将加载到 `myMap` 的 `div` 中。一些样式允许它占据页面的宽度和高度。 > 🎓 `div` 是网页中的一个部分,可以命名和设置样式。 1. 在打开的 `` 标签下,添加一个外部样式表来控制地图显示,以及一个来自 Web SDK 的外部脚本来管理地图行为: ```html ``` 这个样式表包含地图外观的设置,而脚本文件包含加载地图的代码。添加这些代码类似于包含 C++ 头文件或导入 Python 模块。 1. 在该脚本下方,添加一个脚本块以启动地图。 ```javascript ``` 将 `