# 視覺化位置數據  > 手繪筆記由 [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 ``` 將 `