# 可視化位置數據  > 手繪筆記由 [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 決定了你實現的地圖樣式。 你可以通過使用其 [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) 來訪問 Azure Maps API。 在本課程中,你將使用 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 ``` 將 `