# 位置データの可視化  > スケッチノート作成者:[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`の値をコピーしてください。 ## ウェブページにマップを表示する 次のステップは、ウェブページにマップを表示することです。小規模なウェブアプリでは、1つの`html`ファイルを使用しますが、実際のプロダクション環境やチーム環境では、ウェブアプリにはもっと多くの要素が含まれる可能性があります。 ### タスク - ウェブページにマップを表示する 1. ローカルコンピュータの任意のフォルダに`index.html`という名前のファイルを作成します。マップを保持するHTMLマークアップを追加してください: ```html
``` マップは`myMap`という`div`内にロードされます。いくつかのスタイルを使用してページの幅と高さを占めるようにします。 > 🎓 `div`はウェブページのセクションで、名前を付けたりスタイルを適用したりできます。 1. 開始``タグの下に、マップ表示を制御する外部スタイルシートと、その動作を管理するWeb SDKの外部スクリプトを追加してください: ```html ``` このスタイルシートにはマップの外観設定が含まれており、スクリプトファイルにはマップをロードするコードが含まれています。このコードを追加することは、C++のヘッダーファイルを含めたり、Pythonモジュールをインポートしたりするのと似ています。 1. そのスクリプトの下に、マップを起動するスクリプトブロックを追加してください。 ```javascript ``` `