室內地圖的建立工具

本文介紹適用於 Azure 地圖服務建立工具的概念和工具。 建議您先閱讀這篇文章,再開始使用 Azure 地圖服務建立工具 API 和 SDK。

您可以使用建立工具,搭配以室內地圖資料為基礎的地圖功能來開發應用程式。 本文說明上傳、轉換、建立和使用地圖資料的流程。 通常,工作流程是由兩個不同的角色完成,各具有不同的專業知識和責任領域:

  • 地圖製作者:負責策劃和準備地圖資料。
  • Creator 地圖資料使用者:使用應用程式中的客戶地圖資料。

下圖說明整個工作流程。

Creator map data workflow

建立 Azure 地圖服務建立工具

若要使用建立工具服務,必須建立 Azure 地圖服務建立工具資源,並與具有第 2 代定價層的 Azure 地圖服務帳戶相關聯。 如需如何在 Azure 中建立 Azure 地圖服務建立工具資源的詳細資訊,請參閱管理 Azure 地圖服務建立工具

提示

如需定價資訊,請參閱 Azure 地圖服務定價中的建立工具一節。

建立工具驗證

建立工具會繼承 Azure 地圖服務存取控制 (IAM) 設定。 所有用於資料存取的 API 呼叫都必須透過驗證和授權規則傳送。

建立工具使用量資料會併入您的 Azure 地圖服務使用量圖表和活動記錄中。 如需詳細資訊,請參閱管理 Azure 地圖服務中的驗證

重要

建議您使用:

  • 使用 Creator 服務搭配 Azure 地圖服務帳戶所建置的所有解決方案中的 Microsoft Entra ID。 如需 Microsoft Entra ID 的詳細資訊,請參閱 Microsoft Entra 驗證

  • 角色型存取控制設定。 使用這些設定,地圖製作者可以做為 Azure 地圖服務資料參與者角色,而建立工具地圖資料使用者可以做為 Azure 地圖服務資料讀者角色。 如需詳細資訊,請參閱具有角色型存取控制的授權

建立工具資料項目類型

建立工具服務會建立、儲存和使用下列各節中所定義並討論的各種資料類型。 建立工具資料項目可以屬於下列其中一種類型:

  • 已轉換的資料
  • 資料集
  • 地圖底圖集
  • style
  • 地圖設定
  • 功能狀態集
  • 路線集

上傳繪圖套件

Creator 會藉由轉換上傳的繪圖套件來收集室內地圖資料。 繪圖套件代表已結構化或重新塑造的設施。 如需繪圖套件需求的相關資訊,請參閱繪圖套件需求

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

重要

請務必記下唯一識別碼 (udid) 值,之後的作業需要用到這個值。 需要 udid 才能將上傳的套件轉換為室內地圖資料。

轉換繪圖套件

轉換服務會將上傳的繪圖套件轉換成室內地圖資料。 轉換服務也會驗證套件。 驗證問題會分類為兩種類型:

  • 錯誤:如果偵測到任何錯誤,轉換流程會失敗。 發生錯誤時,轉換服務會提供 Azure 地圖服務繪圖錯誤視覺化檢視獨立 Web 應用程式的連結。 您可以使用繪圖錯誤視覺化檢視,檢查在轉換流程期間發生的繪圖套件警告和錯誤。 在修正錯誤之後,您可以嘗試上傳並轉換套件。
  • 警告:如果偵測到任何警告,則轉換成功。 不過,建議您檢閱並解決所有警告。 出現警告時,表示已忽略或自動修正轉換的一部分。 若無法解決警告,可能會導致後續的流程發生錯誤。 如需詳細資訊,請參閱繪圖套件警告和錯誤

建立室內地圖資料

Azure 地圖服務建立工具提供下列支援地圖建立的服務:

資料集

資料集是室內地圖功能的集合。 室內地圖功能代表轉換的繪圖套件中定義的設施。 在使用資料集服務建立資料集之後,您可以建立任意數目的地圖底圖集功能狀態集

開發人員隨時都可以使用資料集服務新增或移除現有資料集的設施。 如需如何使用 API 更新現有資料集的詳細資訊,請參閱資料集服務中的附加選項。 如需如何更新資料集的範例,請參閱資料維護

地圖底圖集

地圖底圖集是向量資料的集合,代表一組統一的方格地圖底圖。 開發人員可以使用地圖底圖集服務,從資料集建立地圖底圖集。

若要反映不同的內容階段,您可以從相同的資料集建立多個地圖底圖集。 例如,您可以使用傢俱和設備來建立一個地圖底圖集,並建立另一個沒有傢俱和設備的地圖底圖集。 您可以選擇使用最新的資料更新產生一個地圖底圖集,並產生另一個並非使用最新資料更新的地圖底圖集。

除了向量資料以外,地圖底圖集還提供地圖轉譯最佳化的中繼資料。 例如,地圖底圖集中繼資料包含地圖底圖集的最小和最大縮放層級。 中繼資料也會提供一個定義地圖底圖集地理範圍的周框方塊。 應用程式可以使用周框方塊,以程式設計方式設定正確的中心點。 如需有關地圖底圖集中繼資料的詳細資訊,請參閱地圖底圖集清單

建立地圖底圖集之後,就可以使用 Render 服務擷取。

如果地圖底圖集已過時且不再有用,您可以刪除該地圖底圖集。 如需如何刪除地圖底圖集的相關資訊,請參閱資料維護

注意

地圖底圖集並不依賴其建立來源的資料集。 如果您從資料集建立地圖底圖集,接著更新該資料集,則系統不會更新地圖底圖集。

若要反映資料集中的變更,您必須建立新的地圖底圖集。 同樣地,如果您刪除地圖底圖集,資料集不會受到影響。

自訂樣式 (預覽)

樣式會定義地圖的視覺外觀。 它會定義要繪製的資料、繪製資料的順序,以及如何在繪製資料時設定其樣式。 Azure 地圖服務 Creator 樣式支援樣式圖層原件的MapLibre 標準。

當您將繪圖套件上傳至您的 Azure 地圖服務帳戶,隨後轉換繪圖套件時,預設樣式會套用至地圖的元素。 自訂樣式服務可讓您自訂地圖的視覺外觀。 若要執行此作業,您可以使用樣式 - 建立 HTTP 要求來手動編輯樣式 JSON 並匯入 Azure 地圖服務帳戶,但建議方法是使用視覺樣式編輯器。 如需詳細資訊,請參閱建立室內地圖的自訂樣式

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) 多邊形。
篩選器 僅顯示符合篩選準則的功能。
layout 圖層的配置屬性。
minzoom 介於 0 到 24 之間的數字,表示圖層的最小縮放層級。 在小於 minzoom 的縮放層級上,會隱藏該圖層。
paint 此圖層的預設繪製屬性。
source-layer 來源會從地圖上顯示的向量圖格來源提供資料。 向量圖格來源需要;禁止用於所有其他來源類型,包括 GeoJSON 來源。

地圖設定

地圖設定為設定陣列。 每個設定都包含基底地圖和一或多個圖層,每個圖層均由樣式 + 圖格集 Tuple 所組成。

當您在 Azure 地圖服務中開發應用程式時,會透過地圖物件的將室內管理工具具現化來使用此地圖設定。 它會使用 mapConfigurationIdalias 來參考。 地圖設定是不可變的。 對現有地圖設定進行變更時,會建立新的地圖設定,因而產生不同的 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"
                }
            ]
        }
    ]
}
樣式物件屬性 描述
Name 樣式的名稱。
displayName 樣式的顯示名稱。
description 使用者定義的樣式描述。
縮圖 用來指定此樣式之樣式選擇器中使用的縮圖。 如需詳細資訊,請參閱樣式選擇器控制項
baseMap 用來設定基底地圖樣式。
圖層 圖層陣列是由一或多個 圖格集 + 樣式 Tuple 所組成,每一個都是地圖的圖層。 這可讓地圖上有多個建築物,每個建築物都以自己的圖格集表示。

其他資訊

功能狀態集

功能狀態集是指派給資料集功能 (例如空間或設備) 的動態屬性集合 (「狀態」)。 「狀態」的範例可以是溫度或使用量。 每個「狀態」都是索引鍵/值組,其中包含屬性名稱、值和上次更新的時間戳記。

您可以使用功能狀態服務建立和管理資料集的功能狀態集。 狀態集是由一或多個 「狀態」所定義。 每項功能 (例如空間) 都可以附加一個「狀態」

IoT 裝置或其他應用程式更新或擷取的狀態集中每個狀態的值。 例如,使用功能狀態更新 API,測量空間佔用量的裝置可以有系統地張貼空間的狀態變更。

應用程式可以使用功能狀態集,根據其目前狀態和各自的地圖樣式,動態呈現設施中的功能。 如需在轉譯地圖中使用功能狀態集樣式功能的詳細資訊,請參閱室內地圖模組

注意

如同地圖底圖集,變更資料集並不會影響現有的功能狀態集,且刪除功能狀態集不會影響其所附加的資料集。

Wayfinding (預覽)

Wayfinding 服務可讓您為客戶提供設施內兩點之間的最短路徑。 匯入室內地圖資料並建立資料集之後,您就可以使用該資料來建立路線集。 路線集提供產生兩個點之間路徑所需的資料。 wayfinding 服務考慮了開口的最小寬度等因素,因此在樓層之間導航時可選擇性地排除電梯或階梯。

Creator wayfinding 由 Havok 提供。

Wayfinding 路徑

成功產生 wayfinding 路徑時,它會尋找指定設施中兩點之間的最短路徑。 路程中的每個樓層都會以個別的路段來表示,如同用來在樓層之間移動的任何階梯或電梯。

例如,路徑的第一段可能是從原點到該樓層的電梯。 下一個路段是電梯,最後一個路段則是從電梯到目的地的路徑。 估計的行進時間也會同時計算,並在 HTTP 回應 JSON 中傳回。

結構

設施資料必須含有結構,wayfinding 才能運作。 wayfinding 服務會計算設施中兩個選取點之間的最短路徑。 服務會在結構 (例如牆和任何其他無法穿透的結構) 周圍導航,藉此建立路徑。

垂直穿透

如果選取的原點和目的地位於不同的樓層,則 wayfinding 服務會決定哪些 verticalPenetration 物件 (例如階梯或電梯) 可以做為在樓層之間垂直導航的可能路徑。 根據預設,會使用產生最短路徑的選項。

Wayfinding 服務會根據垂直穿透的 direction 屬性值,在路徑中包含階梯或電梯。 如需 direction 屬性的詳細資訊,請參閱設施本體一文中的 verticalPenetration。 請參閱 wayfinding API 文件中的 avoidFeaturesminWidth 屬性,以了解可能會影響樓層之間路徑選擇的其他因素。

如需詳細資訊,請參閱室內地圖 wayfinding 服務操作說明一文。

使用室內地圖

轉譯 - 取得地圖底圖 API

Azure 地圖服務 [轉譯 - 取得地圖底圖] API 已擴大至支援 Creator 地圖底圖集。

應用程式可以使用 [轉譯 - 取得地圖底圖] API 來要求地圖底圖集。 然後,您可以將地圖底圖集整合到地圖控制項或 SDK 中。 如需使用轉譯服務的地圖控制項範例,請參閱室內地圖模組

Web Feature Service API

您可以使用 Web Feature Service (WFS) 來查詢資料集。 WFS 會依循開放地理空間協會 API 功能。 您可以使用 WFS API 來查詢資料集本身內的功能。 例如,您可以使用 WFS 來尋找特定設施和樓層的所有中型會議室。

別名 API

Creator 服務 (例如轉換、資料集、圖格集和功能狀態) 會針對從 API 建立的每個資源傳回識別碼。 別名 API 可讓您指派別名來參考資源識別碼。

室內地圖模組

Azure 地圖服務 Web SDK 包括室內地圖模組。 此模組為 Azure 地圖服務「地圖控制項」程式庫提供擴充功能。 室內地圖模組會轉譯在建立工具中建立的室內地圖。 它會整合小工具 (例如樓層選擇器),協助使用者將不同的樓層視覺化。

您可以使用室內地圖模組建立 Web 應用程式,將室內地圖資料與其他各項 Azure 地圖服務進行整合。 最常見的應用程式設定包括將來自其他地圖 (例如道路、影像、天氣和運輸) 的知識新增至室內地圖。

室內地圖模組也支援動態地圖樣式。 如需在應用程式中實作功能狀態集動態樣式的逐步解說,請參閱使用室內地圖模組

Azure 地圖服務整合

開始開發適用於室內地圖的解決方案時,您可以探索整合現有 Azure 地圖服務功能的方式。 例如,您可以使用地理柵欄服務搭配 Creator 室內地圖,來實作資產追蹤或安全性案例。 例如,您可以使用地理柵欄 API,判斷員工是否進入或離開特定的室內區域。 如需如何連接 Azure 地圖服務與 IoT 遙測資料的詳細資訊,請參閱教學課程:使用 Azure 地圖服務實作 IoT 空間分析

資料維護

您可以使用 Azure 地圖服務建立工具清單、更新和刪除 API,列出、更新和刪除您的資料集、地圖底圖集和功能狀態集。

注意

當檢閱項目清單,以判斷是否將其刪除時,請考慮該刪除動作對所有相依 API 或應用程式的影響。 例如,如果您透過 [轉譯 - 取得地圖底圖] API 刪除正由應用程式使用的地圖底圖集,則應用程式無法轉譯該地圖底圖集。

範例:更新資料集

下列範例說明如何更新資料集、建立新的地圖底圖集,以及刪除舊的地圖底圖集:

  1. 遵循上傳繪圖套件繪圖套件章節中的步驟,上傳和轉換新的繪圖套件。
  2. 使用資料集建立,將已轉換的資料附加至現有的資料集。
  3. 使用地圖底圖建立,從更新的資料集產生新的地圖底圖集。
  4. 為下一個步驟儲存新的 tilesetId
  5. 若要啟用所更新校園資料集的視覺效果,請更新應用程式中的地圖底圖集識別碼。 如果不再使用舊的地圖底圖集,您可以將其刪除。

下一步