GeoJSON パッケージを使用してデータセットを作成する (プレビュー)

Azure Maps Creator を使用すると、Facility Ontology 2.0 で GeoJSON 形式の屋内マップ データをインポートしてから、それをデータセットの作成に使用できます。

注意

この記事では、GeoJSON パッケージからデータセットを作成する方法について説明します。 屋内マップを完成させるために必要な追加の手順については、「次のステップ」を参照してください。

前提条件

重要

  • この記事では、地理的な URL us.atlas.microsoft.comを使用します。 Creator サービスが米国内で作成されていない場合は、別の地理的 URL を使用する必要があります。 詳細については、「Creator サービスにアクセスする」を参照してください。
  • この記事の URL の例では、{Your-Azure-Maps-Subscription-key} を Azure Maps サブスクリプション キーに置き換える必要があります。

GeoJSON パッケージを使用してデータセットを作成する

GeoJSON パッケージの詳細については、「GeoJSON zip パッケージの要件」セクションを参照してください。

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

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

重要

一意識別子 (udid) の値を必ず書き留めてください。必要になります。 udid は、ソース コードと HTTP 要求から Azure Storage アカウントにアップロードした GeoJSON パッケージを参照する方法です。

データセットを作成する

データセットは、建物、階層、部屋などのマップ地物のコレクションです。 GeoJSON からデータセットを作成するには、Dataset Create API を使用します。 Dataset Create API では、前のセクションで取得した udid を受け取り、新しいデータセットの datasetId を返します。

重要

これは、以前のバージョンの Dataset Create API とは異なり、変換された Drawing パッケージの conversionId を必要としません。

データセットを作成するには、次の手順を行います。

  1. データセット サービスへの次の URL を入力します。 要求は、次の URL のようになります ({udid} は「GeoJSON パッケージをアップロードする」セクションで取得した udid に置き換えます)。
https://us.atlas.microsoft.com/datasets?api-version=2023-03-01-preview&udid={udid}&subscription-key={Your-Azure-Maps-Subscription-key}
  1. 応答ヘッダーの Operation-Location キーの値をコピーします。 Operation-Location キーは status URL とも呼ばれ、データセット作成プロセスの状態を確認し、タイルセットを作成するために必要な datasetId を取得するために必要です。

データセットの作成状態を確認する

データセット作成プロセスの状態を確認し、datasetId を取得するには、次の手順を行います。

  1. データセットを作成する」でコピーした状態 URL を入力します。 要求は次の URL のようになります。

    https://us.atlas.microsoft.com/datasets/operations/{operationId}?api-version=2023-03-01-preview&subscription-key={Your-Azure-Maps-Subscription-key}
    
  2. HTTP 応答のヘッダーで、Resource-Location キーに含まれる一意識別子の値をコピーします。

    https://us.atlas.microsoft.com/datasets/**c9c15957-646c-13f2-611a-1ea7adc75174**?api-version=2023-03-01-preview

屋内マップを完成させる際に役立つ記事へのリンクについては、「次のステップ」を参照してください。

既存のデータセットにデータを追加する

追加するデータの一意識別子と共に Dataset Create APIdatasetId パラメーターを指定することによって、既存のデータセットにデータを追加できます。 この一意識別子は、udid または conversionId のいずれかです。 これにより、既存のデータセットとインポートされる新しいデータの両方のデータ (ファシリティ) で構成される新しいデータセットが作成されます。 新しいデータセットが正常に作成されたら、以前のデータセットを削除できます。

既存のデータセットに追加する際に考慮すべき点の 1 つは、地物 ID の作成方法です。 変換された Drawing パッケージからデータセットを作成すると、地物 ID が自動的に生成されます。 GeoJSON パッケージからデータセットを作成する場合は、GeoJSON ファイルに地物 ID を指定する必要があります。 既存のデータセットに追加する場合、地物 ID の作成方法は元のデータセットによって左右されます。 udid を使用して元のデータセットが作成された場合は、GeoJSON の ID が使用され、今後そのデータセットに追加されるすべての GeoJSON パッケージでそのように処理されます。 conversionId を使用してデータセットが作成された場合、ID は内部生成され、今後そのデータセットに追加されるすべての GeoJSON パッケージで内部生成されます。

GeoJSON ソースから作成されたデータセットに追加する

元のデータセットが GeoJSON ソースから作成され、Drawing パッケージから作成された別の施設を追加する場合は、次の HTTP POST 要求で示されるように、その conversionId を参照して既存のデータセットにそれを追加できます。

https://us.atlas.microsoft.com/datasets?api-version=2023-03-01-preview&conversionId={conversionId}&outputOntology=facility-2.0&datasetId={datasetId}
識別子 説明
conversionId Drawing パッケージを変換したときに返される ID。 詳細については、「描画パッケージを変換する」を参照してください。
datasetId GeoJSON パッケージから元のデータセットを作成したときに返されるデータセット ID。

GeoJSON zip パッケージの要件

GeoJSON zip パッケージは、1 つ以上の RFC 7946 に準拠した GeoJSON ファイルで構成されます。これらのファイルは、それぞれ 1 つの地物クラスに対応し、すべてルート ディレクトリに配置され (サブディレクトリはサポートされていません)、標準の zip 圧縮機能で圧縮され、.ZIP 拡張子を使用して名前が付けられます。

各地物クラス ファイルは、Facility Ontology 2.0 の定義と一致する必要があり、各地物にはグローバル一意識別子が必要です。

地物 ID には、英数字 (a-z、A-Z、0-9)、ハイフン (-)、ドット (.)、アンダースコア (_) 文字のみを含めることができます。

ヒント

グローバル一意識別子 (GUID) を確実に指定したい場合は、Guidgen.exe コマンド ライン プログラム (Visual Studio で使用可能) などの GUID 生成ツールを実行して作成することを検討してください。 Guidgen.exe では、実行回数や実行するマシンの数に関係なく、同じ数値を 1 回しか生成しません。

データセットの Facility Ontology 2.0 検証

Facility Ontology 2.0 では、Azure Maps Creator の内部で施設データを地物クラスに分割して Creator のデータセットに格納する方法を定義します。 GeoJSON パッケージをインポートする際には、地物が追加または変更されるたびに一連の検証が実行されます。 これには、参照整合性チェック、ジオメトリと属性の検証が含まれます。 これらの検証は、次の一覧で詳細に説明されています。

  • データセットに一度にインポートできる地物の最大数は 150,000 個です。
  • 施設の面積は 4 ~ 4,000 平方 Km です。
  • 最上位の要素は facility (施設) です。これは、facility.geojson ファイル内の各建物を定義したものです。
  • 各施設には 1 つ以上のレベルがあり、それらは levels.geojson ファイルで定義されています。
    • 各レベルは施設の内部にある必要があります。
  • level (レベル) には、unit (ユニット)、structure (構造物)、verticalPenetration (垂直貫入)、opening (開口部) が含まれます。 レベルに定義されているすべての項目は、レベルのジオメトリ内に完全に含まれている必要があります。
    • unit は、廊下、オフィス、中庭などの項目の配列で構成されます。これらは、area (領域)、line (線)、または point (点) 要素によって定義されます。 ユニットは、unit.geojson ファイルで定義されます。
      • すべての unit 要素は、そのレベル内に完全に含まれていて、その子と交差している必要があります。
    • structure では、壁など、重なり合っておらず、通り抜けることができない物理的な領域を定義します。 構造物は、structure.geojson ファイルで定義されます。
    • verticalPenetration は、階段やエレベーターなどのレベル間を垂直方向に移動する手段を表し、verticalPenetration.geojson ファイルで定義されます。
      • 垂直貫入は、同じ平面上の他の垂直貫入と交差できません。
    • openings では、2 つのユニット間または unitverticalPenetration 間の通過可能な境界を定義します。これは opening.geojson ファイルで定義されます。
      • 開口部は、同じレベルの他の開口部と交差できません。
      • すべての opening は、少なくとも 1 つの verticalPenetration または unit に関連付ける必要があります。

次のステップ