使用 GeoJson 套件建立資料集 (預覽)

Azure 地圖服務 Creator 可讓使用者使用 Facility Ontology 2.0 以 GeoJSON 格式匯入其室內地圖資料,然後可用來建立資料集

注意

本文說明如何從 GeoJSON 套件建立資料集。 如需完成室內地圖所需其他步驟的詳細資訊,請參閱後續步驟

必要條件

重要

  • 本文章使用 us.atlas.microsoft.com 地理 URL。 如果您的 Creator 服務未在美國建立,您必須使用不同的地理 URL。 如需詳細資訊,請參閱存取 Creator 服務
  • 在本文中的 URL 範例中,您必須將 {Your-Azure-Maps-Subscription-key} 取代為您的 Azure 地圖服務訂用帳戶金鑰。

使用 GeoJSON 套件建立資料集

如需 GeoJSON 套件的詳細資訊,請參閱 Geojson zip 套件需求 一節。

上傳 GeoJSON 套件

請遵循如何建立資料登錄一文所述的步驟,將 GeoJSON 套件上傳至您的 Azure 儲存體帳戶,然後在 Azure 地圖服務帳戶中註冊。

重要

請務必記下唯一識別碼 (udid) 值,之後的作業需要用到這個值。 udid 是您如何從原始程式碼和 HTTP 要求參考上傳至 Azure 儲存體帳戶的 GeoJSON 套件。

建立資料集

此資料集是地圖特徵的集合,例如建築物、樓層和房間。 若要從 GeoJSON 建立資料集,請使用新的資料集建立 API。 資料集建立 API 會採用您在上一節中取得的 udid,並傳回新資料集的 datasetId

重要

這與舊版的資料集建立 API 不同,因為其不需要來自轉換繪圖套件的 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

如需文章的連結,請參閱後續步驟,以協助您完成室內地圖。

將資料新增至現有的資料集

您可以藉由將 datasetId 參數提供給資料集建立 API,以及提供您所要新增資料的唯一識別碼,將資料新增至現有的資料集。 唯一識別碼可以是 udidconversionId。 這會建立新的資料集,其中包含來自現有資料集和匯入新資料的資料 (設施)。 成功建立新的資料集之後,就可以刪除舊的資料集。

新增至現有資料集時要考慮的一件事,就是如何建立功能識別碼。 如果資料集是從轉換的繪圖套件建立,系統會自動產生功能識別碼。 從 GeoJSON 套件建立資料集時,必須在 GeoJSON 檔案中提供功能識別碼。 附加至現有的資料集時,原始資料集會驅動功能識別碼的建立方式。 如果使用 udid 建立原始資料集,這會使用 GeoJSON 的識別碼,而且未來會繼續使用附加至該資料集的所有 GeoJSON 套件來執行此動作。 如果資料集是使用 conversionId 建立的,則會在內部產生識別碼,而且未來會繼續使用附加至該資料集的所有 GeoJSON 套件在內部產生。

新增至從 GeoJSON 來源建立的資料集

如果您的原始資料集是從 GoeJSON 來源建立,而且您想要新增從繪圖套件建立的另一個設施,您可以參考其 conversionId 來將其附加至現有的資料集,如此 HTTP POST 要求所示:

https://us.atlas.microsoft.com/datasets?api-version=2023-03-01-preview&conversionId={conversionId}&outputOntology=facility-2.0&datasetId={datasetId}
識別碼 描述
conversionId 轉換繪圖套件時傳回的識別碼。 如需詳細資訊,請參閱轉換繪圖套件
datasetId 從 GeoJSON 套件建立原始資料集時所傳回的資料集識別碼。

Geojson zip 套件需求

GeoJSON zip 套件是由一個或多個符合 RFC 7946 規範的 GeoJSON 檔案所組成,每個功能類別都有一個,所有根目錄 (子目錄都不受支援)、使用標準 Zip 壓縮,並使用 .ZIP 延伸模組命名。

每個特徵類別檔案都必須符合其在設施本體 2.0 中的定義,而且每個功能都必須具有全域唯一識別碼。

特徵識別碼只能包含英數位 (a-z、A-Z、0-9)、連字號 (-)、點 (.) 和底線 (_) 字元。

提示

如果您想要確定您有全域唯一識別碼 (GUID),請考慮執行 GUID 產生工具來建立它,例如Guidgen.exe命令列程式 (Visual Studio)。 不論執行多少次或執行多少部不同的機器,Guidgen.exe永遠不會產生相同的數位兩次。

資料集中的設施本體 2.0 驗證

設施本體 2.0 定義 Azure 地圖服務 Creator 如何在 Creator 資料集中內部儲存設施資料 (分為多個功能類別)。 匯入 GeoJSON 套件時,每當新增或修改功能時,就會執行一系列驗證。 這包括參考完整性檢查,以及幾何和屬性驗證。 這些驗證在下列清單中有更詳細的描述。

  • 一次可以匯入資料集的功能數目上限為 150,000。
  • 設施區域可以介於 4 到 4,000 Sq Km 之間。
  • 最上層元素是設施,這會定義 facility.geojson 檔案中的每個建築物。
  • 每個設施都有一個或多個層級,這些層級定義於檔案 levels.goejson 中。
    • 每個層級都必須位於設施內。
  • 每個層級都包含單位結構verticalPenetrations開頭。 層級中定義的所有項目都必須完全包含在層級幾何內。
    • unit 可以包含一系列項目,例如大廳、辦公室和街道,這些項目是由區域線條元素所定義。 單位定義於 unit.goejson 檔案中。
      • 所有 unit 元素都必須完全包含在其層級內,並與其子系交集。
    • structure 定義無法巡覽的實體、非重疊區域,例如牆。 結構定義於 file structure.goejson中。
    • verticalPenetration 表示在層級之間垂直巡覽的方法,例如階梯和電梯,並定義在 verticalPenetration.geojson 檔案中。
      • verticalPenetrations 無法與相同層級上的其他 verticalPenetrations 交集。
    • openings 定義兩個單位之間的可周遊界限,或 unitverticalPenetration 定義於 open.geojson 檔案中。
      • 開頭無法與相同層級上的其他開啟相交。
      • 每個 opening 都必須與至少一個 verticalPenetrationunit 相關聯。

下一步