屋内マップ用の Creator

この記事では、Azure Maps Creator に適用される概念とツールについて説明します。 Azure Maps Creator API と SDK を使い始める前に、この記事を読むことをお勧めします。

Creator を使用すると、フロア ガイド データに基づくマップの地物を含むアプリケーションを開発できます。 この記事では、マップ データをアップロード、変換、作成、使用するプロセスについて説明します。 通常、ワークフローは、専門分野と責任の領域が異なる 2 人の異なる人によって遂行されます。

  • マップ作成者: マップ データの選択と準備を担当します。
  • Creator マップ データ ユーザー: アプリケーションで顧客マップ データを利用します。

次の図はこのワークフロー全体を示したものです。

Creator map data workflow

Azure Maps Creator を作成する

Creator サービスを使用するには、Azure マップ 作成者リソースを作成し、Gen 2 の価格レベルを持つ Azure Maps アカウントに関連付ける必要があります。 Azure で Azure Maps 作成者リソースを作成する方法については、「Azure Maps 作成者の管理」 を参照してください。

ヒント

価格情報については、「Azure Maps の価格」の Creator セクションをご覧ください。

Creator の認証

Creator は Azure Maps Access Control (IAM) の設定を継承します。 データにアクセスするすべての API 呼び出しは、認証および承認の規則と共に送信される必要があります。

Creator の使用状況データは、Azure Maps の使用状況グラフとアクティビティ ログに組み込まれています。 詳細については、「Azure Maps での認証の管理」をご覧ください。

重要

次の機能を使用することをお勧めします。

  • Creator サービスを使って Azure Maps アカウントで作成されたすべてのソリューションでは、Microsoft Entra ID。 Microsoft Entra ID の詳細については、「Microsoft Entra 認証」を参照してください。

  • ロールベースのアクセス制御の設定。 これらの設定を使用すると、マップの作成者が Azure Maps データ共同作成者のロールとして機能し、ユーザーは Azure Maps データ リーダーのロールとして機能することができます。 詳細については、「ロールベースのアクセス制御による認証」を参照してください。

Creator のデータ項目の種類

Creator サービスでは、以下のセクションで定義および説明するさまざまなデータの種類が作成、格納、使用されます。 Creator のデータ項目には、次の種類があります。

  • 変換されたデータ
  • データセット
  • タイルセット
  • style
  • マップ構成
  • 地物の状態セット
  • Routeset

Drawing パッケージをアップロードする

Creator では、アップロードされた Drawing パッケージを変換することによって、フロア ガイド データが収集されます。 Drawing パッケージでは、構築または再モデル化された設備が表されています。 Drawing パッケージの要件については、「Drawing パッケージの要件」を参照してください。

データ レジストリの作成方法の記事に記載されている手順に従って、Drawing パッケージを Azure Storage アカウントにアップロードし、Azure Maps アカウントに登録します。

重要

一意識別子 (udid) の値を必ず書き留めてください。必要になります。 アップロードされたパッケージをフロア ガイド データに変換するには、udid が必要です。

描画パッケージを変換する

Conversion サービスでは、アップロードした描画パッケージがフロア ガイド データに変換されます。 Conversion サービスでは、パッケージの検証も行われます。 検証の問題は、2 つの種類に分類されます。

  • エラー: エラーが検出されると、変換処理は失敗します。 エラーが発生すると、Conversion サービスから、Azure Maps Drawing Error Visualizer スタンドアロン Web アプリケーションへのリンクが提供されます。 Drawing Error Visualizer を使用すると、変換プロセスの間に発生した Drawing パッケージの警告とエラーを調べることができます。 エラーを修正した後、パッケージのアップロードと変換を試みることができます。
  • 警告: 警告が検出された場合、変換は成功します。 ただし、すべての警告を確認して解決することをお勧めします。 警告は、変換の一部が無視されたか、自動的に修正されたことを意味します。 警告を解決しないと、後のプロセスでエラーが発生する可能性があります。 詳細については、Drawing パッケージの警告とエラーに関するページを参照してください。

屋内マップ データを作成する

Azure Maps Creator には、マップの作成をサポートする次のサービスが用意されています。

  • Dataset サービス
  • Tileset サービス。 データセットのベクター ベースの表現を作成するには、Tileset サービスを使用します。 アプリケーションでは、タイルセットを使用して、データセットの視覚的なタイルベースのビューを提供できます。
  • カスタム スタイル サービススタイル サービスまたはビジュアル スタイル エディターを使用して、フロア ガイドのビジュアル要素をカスタマイズします。
  • 地物状態サービス。 動的なマップ スタイル設定をサポートするには、地物状態サービスを使用します。 アプリケーションで動的なマップ スタイルを使用して、IoT システムによって提供されるスペース上にリアルタイムのイベントを反映できます。
  • Wayfinding サービスwayfinding API を使用して、施設内の 2 つのポイント間のパスを生成します。 routeset API を使用して、wayfinding サービスがパスを生成するために必要なデータを作成します。

データセット

データセットは、屋内マップの地物のコレクションです。 フロア ガイドの地物は、変換された Drawing パッケージで定義されている設備を表します。 Dataset サービスを使用してデータセットを作成した後は、任意の数のタイルセットまたは特徴状態セットを作成できます。

開発者は、いつでも Dataset サービスを使用して、既存のデータセットに対する設備の追加や削除を行うことができます。 API を使用して既存のデータセットを更新する方法の詳細については、Dataset サービスに関する記事で追加オプションを参照してください。 データセットを更新する方法の例については、「データのメンテナンス」を参照してください。

タイルセット

タイルセットは、均一のグリッド タイルのセットを表すベクター データのコレクションです。 開発者は、Tileset サービスを使用して、データセットからタイルセットを作成できます。

さまざまなコンテンツ ステージを反映するため、同じデータセットから複数のタイルセットを作成できます。 たとえば、家具や機器を含むタイルセットと、家具や機器を含まない別のタイルセットを作成することができます。 最新のデータ更新を含むタイルセットと、最新のデータ更新を含まない別のタイルセットを生成することもできます。

タイルセットでは、ベクター データだけでなく、マップ レンダリング最適化のためのメタデータも提供されます。 たとえば、タイルセットのメタデータには、タイルセットの最小と最大のズーム レベルが含まれます。 また、メタデータでは、タイルセットの地理的範囲を定義する境界ボックスも提供されます。 アプリケーションで境界ボックスを使用して、プログラムで正しい中心点を設定することができます。 タイルセットのメタデータの詳細については、Tileset List に関するページを参照してください。

作成された後、タイルセットは Render サービスを使用して取得されます。

タイルセットが古くなり、役に立たなくなった場合は、タイルセットを削除できます。 タイルセットを削除する方法については、「データのメンテナンス」を参照してください。

注意

タイルセットは、作成元のデータセットから独立しています。 データセットからタイルセットを作成した場合、後でそのデータセットを更新しても、タイルセットは更新されません。

データセットの変更を反映するには、新しいタイルセットを作成する必要があります。 同様に、タイルセットを削除しても、データセットは影響を受けません。

カスタム スタイル (プレビュー)

スタイルは、マップの視覚的な外観を定義します。 これにより、描画するデータ、描画する順序、描画時のデータのスタイルを形成する方法が定義されます。 Azure Maps Creator スタイルは、スタイル レイヤースプライトの MapLibre 標準をサポートしています。

図面パッケージを Azure Maps アカウントにアップロードした後で変換すると、既定のスタイルがマップの要素に適用されます。 カスタム スタイル サービスを使用すると、マップの視覚的な外観をカスタマイズできます。 これを行うには、スタイル JSON を手動で編集し、Style - Create HTTP 要求を使用して Azure Maps アカウントにインポートしますが、推奨される方法は、ビジュアル スタイル エディターを使用することです。 詳しくは、「屋内マップのカスタム スタイルを作成する」をご覧ください。

style.json ファイルのレイヤーの例は次のとおりです。

{
	"id": "indoor_unit_gym_label",
	"type": "symbol",
	"filter": ["all", ["has","floor0"], ["any", ["==", "categoryName", "room.gym"]]],
	"layout": {
		"visibility": "none",
		"icon-image": "gym",
		"icon-size": {"stops": [[17.5, 0.7], [21, 1.1]]},
		"symbol-avoid-edges": true,
		"symbol-placement": "point",
		"text-anchor": "top",
		"text-field": "{name}",
		"text-font": ["SegoeFrutigerHelveticaMYingHei-Medium"],
		"text-keep-upright": true,
		"text-letter-spacing": 0.1,
		"text-offset": [0, 1.05],
		"text-size": {"stops": [[18, 5], [18.5, 6.5], [19, 8], [19.5, 9.5], [20, 11]]}
	},
	"metadata": {"microsoft.maps:layerGroup": "labels_indoor"},
	"minzoom": 17.5,
	"paint": {
		"text-color": "rgba(0, 0, 0, 1)",
		"text-halo-blur": 0.5,
		"text-halo-color": "rgba(255, 255, 255, 1)",
		"text-halo-width": 1,
		"text-opacity": ["step", ["zoom"], 0, 18, 1]
	},
	"source-layer": "Indoor unit"
},
レイヤーのプロパティ 説明
id レイヤーの名前
type このレイヤーのレンダリングの種類。
よくある種類として、以下ようなものが挙げられます。
塗りつぶし: 塗りつぶされた多角形 (オプションで境界線が描画された外枠付き)。
: ストロークされた線。
記号: アイコンまたはテキスト ラベル。
塗りつぶしの浮き出し: 浮き出し (3D) 多角形。
filter フィルター条件に一致する機能のみが表示されます。
レイアウト レイヤーのレイアウト プロパティ。
minzoom レイヤーの最小ズーム レベルを表す 0 から 24 までの数値。 minzoom 未満のズーム レベルで、レイヤーは非表示になります。
ペイント このレイヤーの既定のペイント プロパティ。
ソース レイヤー ソースは、ベクター タイル ソースから、マップに表示されるデータを提供します。 ベクター タイル ソースに必要です。GeoJSON ソースを含む他のすべてのソースの種類に対して禁止されています。

マップ構成

マップ構成は、構成の配列です。 各構成はベースマップと 1 つ以上のレイヤーで構成され、各レイヤーはスタイル + タイルセット タプルで構成されます。

マップ構成は、Azure Maps でアプリケーションを開発するときに、Map オブジェクトのIndoor Manager をインスタンス化するときに使用されます。 これは、mapConfigurationId または alias を使用して参照されます。 マップ構成は変更できません。 既存のマップ構成を変更すると、新しいマップ構成が作成され、別の mapConfingurationId が生成されます。 既存のマップ構成によって既に使用されている別名を使用してマップ構成を作成すると、それは常に新しいマップ構成を指します。

次の JSON は、既定のマップ構成の例です。 このファイルの各要素については、次の表を参照してください。

{
    "version": 1.0,
    "description": "This is the default Azure Maps map configuration for facility ontology tilesets.",
    "defaultConfiguration": "indoor_light",
    "configurations": [
        {
            "name": "indoor_light",
            "displayName": "Indoor light",
            "description": "A base style for Azure Maps.",
            "thumbnail": "indoor_2022-01-01.png",
            "baseMap": "microsoft_light",
            "layers": [
                {
                    "tilesetId": "fa37d225-924e-3f32-8441-6128d9e5519a",
                    "styleId": "microsoft-maps:indoor_2022-01-01"
                }
            ]
        },
        {
            "name": "indoor_dark",
            "displayName": "Indoor dark",
            "description": "A base style for Azure Maps.",
            "thumbnail": "indoor_dark_2022-01-01.png",
            "baseMap": "microsoft_dark",
            "layers": [
                {
                    "tilesetId": "fa37d225-924e-3f32-8441-6128d9e5519a",
                    "styleId": "microsoft-maps:indoor_dark_2022-01-01"
                }
            ]
        }
    ]
}
スタイル オブジェクトのプロパティ 説明
名前 スタイルの名前です。
displayName スタイルの表示名です。
description スタイルのユーザー定義の説明です。
thumbnail このスタイルのスタイル ピッカーで使用されるサムネイルを指定するために使用します。 詳細については、スタイル ピッカー コントロールを参照してください。
baseMap ベース マップ スタイルを設定する場合に使用します。
レイヤー レイヤー配列は、1 つ以上のタイルセット + スタイル タプルで構成され、それぞれがマップのレイヤーです。 これにより、マップ上の複数の建物が有効になり、各建物は独自のタイルセットで表されます。

関連情報

地物状態セット

地物状態セットは、部屋や機器といったデータセットの地物に割り当てられた動的なプロパティ ("状態") のコレクションです。 "状態" の例としては、温度や占有率などがあります。 各 "状態" は、プロパティの名前、値、最終更新のタイムスタンプが含まれる、キーと値のペアです。

Feature State サービスを使用すると、データセットに対する地物状態セットを作成および管理できます。 状態セットは、1 つまたは複数の "状態" によって定義されます。 各地物 (部屋など) には、1 つの "状態" を関連付けることができます。

状態セット内の各 "状態" の値は、IoT デバイスまたは他のアプリケーションによって更新または取得されます。 たとえば、Feature State Update API を使用すると、空間占有量を測定するデバイスで、部屋の状態の変化を体系的に送信できます。

アプリケーションでは、地物状態セットを使用することで、現在の状態とそれぞれのマップ スタイルに応じて、設備内の地物を動的にレンダリングできます。 地物状態セットを使用してレンダリング マップ内の地物のスタイルを設定する方法の詳細については、「Indoor Maps モジュール」を参照してください。

注意

タイルセットと同様に、データセットを変更しても既存の地物状態セットに影響はなく、地物状態セットを削除しても、関連付けられているデータセットには影響しません。

Wayfinding (プレビュー)

Wayfinding サービスを使用すると、施設内の 2 つのポイント間の最短経路を顧客に提供できます。 屋内マップ データをインポートしてデータセットを作成したら、これを使用してルートセットを作成できます。 ルートセットは、2 つのポイント間のパスを生成するために必要なデータを提供します。 wayfinding サービスでは、開口部の最小幅などを考慮し、結果として階層間を移動するときに、必要に応じてエレベーターや階段を除外することができます。

Creator の wayfinding は Havok を使用しています。

Wayfinding パス

wayfinding パスが正常に生成されると、指定された施設内の 2 つのポイント間の最短経路が検索されます。 経路の各フロアは、フロア間の移動に使用される階段やエレベーターと同様に、個別の区間として表されます。

たとえば、経路の最初の区間は、起点からその階のエレベーターまでである可能性があります。 次の区間はエレベーターであり、そして最後の区間はエレベーターから目的地までの経路です。 推定移動時間も計算され、HTTP 応答 JSON で返されます。

構造

wayfinding を機能させるには、ファシリティ データに構造が含まれている必要があります。 wayfinding サービスは、施設で選択された 2 つのポイント間の最短経路を計算します。 サービスでは、壁や他の不透過性の構造体などの構造体の周りを移動して経路を作成します。

垂直貫入

選択された起点と目的地が異なるフロアにある場合、wayfinding サービスでは、フロア間を垂直方向に移動するための考えられる経路としてどのような verticalPenetration オブジェクト (階段やエレベーターなど) を使用できるかを判定します。 既定では、最短の経路が得られるオプションが使用されます。

Wayfinding サービスでは、垂直貫入の direction プロパティの値に基づいて、経路に階段またはエレベーターが含まれます。 direction プロパティの詳細については、Facility Ontology の記事の「verticalPenetration」を参照してください。 階層間の経路の選択に影響を与える可能性があるその他の要因については、wayfinding API ドキュメントの avoidFeatures および minWidth プロパティを参照してください。

詳細については、wayfinding サービスのフロア ガイドに関するハウツー記事を参照してください。

屋内マップの使用

Render - Get Map Tile API

Azure マップ [Render - Get Map Tile] API が Creator タイルセットをサポートするように拡張されました。

アプリケーションで Render - Get Map Tile API を使用して、タイルセットを要求できます。 その後、タイルセットをマップ コントロールまたは SDK に統合できます。 Render Service を使用するマップ コントロールの例については、「Indoor Maps モジュール」を参照してください。

Web Feature service API

Web Feature Service (WFS) を使用して、データセットのクエリを実行できます。 WFS は、Open Geospatial Consortium API の機能に従います。 WFS API を使用すると、データセット自体の内部にある地物のクエリを実行できます。 たとえば、WFS を使用して、特定の施設とレベルの中規模の会議室をすべて検索することができます。

Alias API

Conversion、Dataset、Tileset、Feature State などの Creator サービスからは、API から作成された各リソースの識別子が返されます。 Alias API を使用すると、リソース識別子を参照するための別名を割り当てることができます。

Indoor Maps モジュール

Azure Maps Web SDK には、Indoor Maps モジュールが含まれています。 このモジュールでは、Azure Maps の "マップ コントロール" ライブラリに対する拡張機能が提供されます。 Indoor Maps モジュールでは、Creator で作成された屋内マップがレンダリングされます。 ユーザーが異なるフロアを視覚化できる "フロア ピッカー" などのウィジェットが統合されています。

Indoor Maps モジュールを使用すると、フロア ガイド データを他の Azure Maps サービスと統合する Web アプリケーションを作成できます。 最も一般的なアプリケーションの設定としては、道路、画像、気象、交通などの他のマップからフロア ガイドへの知識の追加などがあります。

また、Indoor Maps モジュールでは動的なマップ スタイル設定もサポートされています。 アプリケーションで地物状態セットの動的なスタイル設定を実装する方法の詳細な手順については、Indoor Map モジュールの使用に関する記事を参照してください。

Azure Maps の統合

屋内マップ用のソリューションの開発を始めたら、既存の Azure Maps の機能を統合する方法がわかります。 たとえば、Geofence サービスと Creator のフロア ガイドを使用して、資産の追跡や安全性のシナリオを実装できます。 たとえば、Geofence API を使用して、ワーカーが屋内の特定の区域に出入りしたかどうかを判断できます。 Azure Maps と IoT テレメトリを接続する方法の詳細については、「チュートリアル: Azure Maps を使用した IoT 空間分析の実装」を参照してください。

データのメンテナンス

Azure Maps Creator の List、Update、Delete API を使用すると、データセット、タイルセット、地物状態セットの一覧表示、更新、削除を行うことができます。

注意

アイテムの一覧を確認して削除するかどうかを決定するときは、すべての依存 API またはアプリケーションに対するその削除の影響を考慮します。 たとえば、[Render - Get Map Tile] API を使用してアプリケーションで使用されているタイルセットを削除すると、アプリケーションはそのタイルセットのレンダリングに失敗します。

例:データセットの更新

次の例では、データセットの更新、新しいタイルセットの作成、古いタイルセットの削除を行う方法を示します。

  1. Drawing パッケージをアップロードする」および「Drawing パッケージを変換する」セクションの手順に従い、新しい Drawing パッケージをアップロードして変換します。
  2. Dataset Create を使用して、変換されたデータを既存のデータセットに追加します。
  3. Tileset Create を使用して、更新されたデータセットから新しいタイルセットを生成します。
  4. 次のステップのために、新しい tilesetId を保存します。
  5. 更新されたキャンパス データセットの視覚化を有効にするには、アプリケーションでタイルセット識別子を更新します。 古いタイルセットを使用しなくなった場合は、削除することができます。

次のステップ