실내 맵용 Creator

이 문서에서는 Azure Maps Creator에 적용되는 개념과 도구를 소개합니다. Azure Maps Creator API 및 SDK를 사용하기 전에 이 문서를 참조하는 것이 좋습니다.

Creator를 사용하여 실내 맵 데이터를 기준으로 하는 맵 기능을 갖춘 애플리케이션을 개발할 수 있습니다. 이 문서에서는 맵 데이터를 업로드, 변환, 생성 및 사용하는 프로세스에 대해 설명합니다. 일반적으로 워크플로는 고유한 전문 지식 및 책임 영역에 속하는 두 명의 서로 다른 개인이 완료합니다.

  • 맵 작성자: 맵 데이터 큐레이팅 및 준비를 담당합니다.
  • Creator 맵 데이터 사용자: 애플리케이션에서 고객 맵 데이터를 활용합니다.

다음 다이어그램에서는 전체 워크플로를 보여 줍니다.

Creator map data workflow

Azure Maps Creator 만들기

Creator 서비스를 사용하려면 Azure Maps Creator 리소스를 만들고 Gen 2 가격 책정 계층을 사용하여 Azure Maps 계정에 연결해야 합니다. Azure에서 Azure Maps Creator를 만드는 방법에 대한 자세한 내용은 Azure Maps Creator 관리를 참조하세요.

가격 책정 정보는 Azure Maps 가격 책정Creator 섹션을 참조하세요.

Creator 인증

Creator는 IAM(Azure Maps Access Control) 설정을 상속합니다. 데이터 액세스에 대한 모든 API 호출은 인증 및 권한 부여 규칙과 함께 전송되어야 합니다.

Creator 사용량 현황 데이터는 Azure Maps 사용량 차트 및 활동 로그에 통합됩니다. 자세한 내용은 Azure Maps의 인증 관리를 참조하세요.

Important

다음을 사용하는 것이 좋습니다.

  • Creator 서비스를 사용하여 Azure Maps 계정으로 빌드된 모든 솔루션의 Microsoft Entra ID입니다. Microsoft Entra ID에 대한 자세한 내용은 Microsoft Entra 인증을 참조하세요.

  • 역할 기반 액세스 제어 설정. 이러한 설정을 사용하여 맵 제작자는 Azure Maps Data Contributor 역할을 할 수 있고, Creator 맵 데이터 사용자는 Azure Maps Data Reader 역할을 할 수 있습니다. 자세한 내용은 역할 기반 액세스 제어를 통해 권한 부여를 참조하세요.

Creator 데이터 항목 형식

Creator 서비스는 다음 섹션에서 정의하고 설명하는 다양한 데이터 형식을 만들고 저장하고 사용합니다. Creator 데이터 항목은 다음 형식일 수 있습니다.

  • 변환된 데이터
  • 데이터 세트
  • 타일 세트
  • style
  • 맵 구성
  • 기능 상태 세트
  • 경로 집합

그리기 패키지 업로드

Creator는 업로드된 그리기 패키지를 변환하여 실내 맵 데이터를 수집합니다. 그리기 패키지는 건조되거나 리모델링된 시설을 나타냅니다. 그리기 패키지 요구 사항에 대한 자세한 내용은 그리기 패키지 요구 사항을 참조하세요.

데이터 레지스트리를 만드는 방법 문서에 설명된 단계에 따라 그리기 패키지를 Azure Storage 계정에 업로드한 다음, Azure Maps 계정에 등록합니다.

Important

고유 식별자(udid) 값이 필요하므로 기록해 둡니다. 업로드된 패키지를 실내 맵 데이터로 변환하려면 udid가 필요합니다.

그리기 패키지 변환

Conversion 서비스는 업로드된 그리기 패키지를 실내 맵 데이터로 변환합니다. 또한 Conversion 서비스는 패키지의 유효성을 검사합니다. 유효성 검사 문제는 다음 두 가지 유형으로 분류됩니다.

  • 오류: 오류가 검색되면 변환 프로세스가 실패합니다. 오류가 발생하면 Conversion 서비스에서 Azure Maps 그리기 오류 시각화 도우미 독립 실행형 웹 애플리케이션에 대한 링크를 제공합니다. 그리기 오류 시각화 도우미를 사용하여 변환 프로세스 중에 발생한 그리기 패키지 경고 및 오류를 검사할 수 있습니다. 오류를 수정한 후에는 패키지를 업로드하고 변환할 수 있습니다.
  • 경고: 경고가 검색되면 변환이 성공합니다. 그러나 모든 경고를 검토하고 해결하는 것이 좋습니다. 경고는 변환의 일부가 무시되었거나 자동으로 수정되었음을 나타냅니다. 경고가 해결되지 않으면 후속 프로세스에서 오류가 발생할 수 있습니다. 자세한 내용은 그리기 패키지 경고 및 오류를 참조하세요.

실내 맵 데이터 만들기

Azure Maps Creator는 맵 만들기를 지원하는 다음 서비스를 제공합니다.

데이터 집합

데이터 세트는 실내 맵 기능의 컬렉션입니다. 실내 맵 기능은 변환된 그리기 패키지에 정의된 시설을 나타냅니다. 데이터 세트 서비스를 사용하여 데이터 세트가 만들어지면 원하는 수의 타일 세트 또는 기능 상태 세트를 만들 수 있습니다.

언제든지 개발자는 데이터 세트 서비스를 사용하여 언제든지 시설을 기존 데이터 세트에 추가하거나 제거할 수 있습니다. API를 사용하여 기존 데이터 세트를 업데이트하는 방법에 대한 자세한 내용은 데이터 세트 서비스의 추가 옵션을 참조하세요. 데이터 세트를 업데이트하는 방법에 대한 예제는 데이터 유지 관리를 참조하세요.

타일 세트

타일 세트는 균일한 그리드 타일 세트를 나타내는 벡터 데이터의 컬렉션입니다. 개발자는 타일 세트 서비스를 사용하여 데이터 세트에서 타일 세트를 만들 수 있습니다.

여러 콘텐츠 단계를 반영하기 위해 동일한 데이터 세트에서 여러 타일 세트를 만들 수 있습니다. 예를 들어 가구와 장비가 있는 타일 세트와 가구 및 장비가 없는 타일 세트를 각각 만들 수 있습니다. 최신 데이터 업데이트가 있는 타일 세트와 최신 데이터 업데이트가 없는 또 다른 타일 세트를 각각 생성하도록 선택할 수 있습니다.

타일 세트는 벡터 데이터 외에도 맵 렌더링 최적화를 위한 메타데이터를 제공합니다. 예를 들어 타일 세트 메타데이터에는 타일 세트의 최소 및 최대 확대/축소 수준이 포함됩니다. 또한 메타데이터는 타일 세트의 지리적 범위를 정의하는 경계 상자를 제공합니다. 애플리케이션은 경계 상자를 사용하여 정확한 중심점을 프로그래밍 방식으로 설정할 수 있습니다. 타일 세트 메타데이터에 대한 자세한 내용은 타일 세트 목록을 참조하세요.

타일 세트가 만들어지면 Render Service를 사용하여 검색됩니다.

타일 세트가 오래되고 더 이상 유용하지 않은 경우 타일 세트를 삭제할 수 있습니다. 타일 세트를 삭제하는 방법에 대한 자세한 내용은 데이터 유지 관리를 참조하세요.

참고 항목

타일 세트는 만들어진 데이터 세트와 독립적입니다. 데이터 세트에서 타일 세트를 만든 다음, 해당 데이터 세트를 업데이트하더라도 타일 세트가 업데이트되지 않습니다.

데이터 세트의 변경 내용을 반영하려면 새 타일 세트를 만들어야 합니다. 마찬가지로 타일 세트를 삭제하더라도 데이터 세트에는 영향을 주지 않습니다.

사용자 지정 스타일 지정(미리 보기)

스타일은 맵의 시각적 모양을 정의합니다. 그릴 데이터, 그리는 순서 및 그릴 때 데이터의 스타일을 지정하는 방법을 정의합니다. Azure Maps Creator 스타일은 스타일 레이어스프라이트에 대한 MapLibre 표준을 지원합니다.

그리기 패키지를 Azure Maps 계정에 업로드한 후 변환하는 경우 기본 스타일이 맵의 요소에 적용됩니다. 사용자 지정 스타일 지정 서비스를 사용하면 맵의 시각적 모양을 사용자 지정할 수 있습니다. 이 작업은 스타일 JSON을 수동으로 편집하고 스타일 - 만들기 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 이 레이어에 대한 렌더링 형식입니다.
더 일반적인 형식 중 일부는 다음과 같습니다.
fill: 선택적 스트로크 테두리가 있는 채워진 다각형입니다.
Line: 스트로크된 선입니다.
Symbol: 아이콘 또는 텍스트 레이블입니다.
fill-extrusion: 압출된(3D) 다각형입니다.
필터링 필터 조건과 일치하는 기능만 표시됩니다.
layout 레이어에 대한 레이아웃 속성입니다.
minzoom 레이어의 최소 확대/축소 수준을 나타내는 0~24의 숫자입니다. minzoom보다 작은 확대/축소 수준에서는 계층이 숨겨집니다.
paint 이 레이어에 대한 기본 페인트 속성입니다.
source-layer 원본은 맵에 표시되는 벡터 타일 원본의 데이터를 제공합니다. 벡터 타일 원본에 필요합니다. GeoJSON 원본을 포함한 다른 모든 원본 유형에는 금지됩니다.

맵 구성

맵 구성은 구성의 배열입니다. 각 구성은 기본 맵 및 하나 이상의 레이어로 구성되며, 각 레이어는 스타일 + 타일 세트 튜플로 구성됩니다.

맵 구성은 Azure Maps에서 애플리케이션을 개발할 때 맵 개체의 실내 관리자를 인스턴스화하는 데 사용됩니다. 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 스타일에 대한 사용자 정의 설명입니다.
썸네일 이 스타일의 스타일 선택기에서 사용되는 썸네일을 지정하는 데 사용합니다. 자세한 내용은 스타일 선택기 컨트롤을 참조하세요.
baseMap 기본 맵 스타일을 설정하는 데 사용합니다.
레이어 레이어 배열은 각각 맵의 레이어인 하나 이상의 타일 세트 + 스타일 튜플로 구성됩니다. 이렇게 하면 맵에서 여러 건물을 사용할 수 있으며, 각 건물은 자체 타일 세트로 표시됩니다.

추가 정보

기능 상태 세트

기능 상태 세트는 방 또는 장비와 같은 데이터 세트 기능에 할당된 동적 속성의 컬렉션(상태)입니다. 상태의 예는 온도 또는 점유율일 수 있습니다. 각 상태는 속성 이름, 값 및 마지막 업데이트의 타임스탬프를 포함한 키/값 쌍입니다.

기능 상태 서비스를 사용하여 데이터 세트에 대한 기능 상태 세트를 만들고 관리할 수 있습니다. 상태 세트는 하나 이상의 상태로 정의됩니다. 방과 같은 각 기능에는 하나의 상태가 연결되어 있을 수 있습니다.

상태 집합의 각 상태 값은 IoT 디바이스 또는 기타 애플리케이션에 의해 업데이트되거나 검색됩니다. 예를 들어 기능 상태 업데이트 API를 사용하면 공간 점유율을 측정하는 디바이스에서 방의 상태 변화를 체계적으로 게시할 수 있습니다.

애플리케이션은 기능 상태 세트를 사용하여 현재 상태 및 각각의 맵 스타일에 따라 시설의 기능을 동적으로 렌더링할 수 있습니다. 기능 상태 세트를 사용하여 렌더링 맵의 기능 스타일을 지정하는 방법에 대한 자세한 내용은 실내 맵 모듈을 참조하세요.

참고 항목

타일 세트와 마찬가지로 데이터 세트를 변경하더라도 기존 기능 상태 세트에는 영향을 주지 않으며, 기능 상태 세트를 삭제하더라도 연결된 데이터 세트에는 영향을 주지 않습니다.

길 찾기(미리 보기)

길 찾기 서비스를 사용하면 고객에게 시설 내 두 지점 사이의 가장 짧은 경로를 제공할 수 있습니다. 실내 맵 데이터를 가져오고 데이터 세트를 만들었으면 이를 사용하여 경로 집합을 만들 수 있습니다. 경로 집합은 두 지점 사이의 경로를 생성하는 데 필요한 데이터를 제공합니다. 길 찾기 서비스는 개구부의 최소 너비와 같은 사항을 고려하며, 결과적으로 수준 간을 탐색할 때 필요에 따라 엘리베이터 또는 계단을 제외할 수 있습니다.

Creator 길 찾기는 Havok에서 제공합니다.

길 찾기 경로

길 찾기 경로가 성공적으로 생성되면 지정된 시설에서 두 지점 사이의 가장 짧은 경로를 찾습니다. 이동의 각 층은 별도의 레그로 표시되며, 층 사이를 이동하는 데 사용되는 계단 또는 엘리베이터도 마찬가지입니다.

예를 들어 경로의 첫 번째 레그는 원점에서 해당 층의 엘리베이터까지일 수 있습니다. 다음 구간은 엘리베이터이고, 마지막 구간은 엘리베이터에서 대상까지의 경로입니다. 예상 이동 시간도 계산되어 HTTP 응답 JSON에서 반환됩니다.

구조체

길 찾기가 작동하려면 시설 데이터에 구조물이 포함되어야 합니다. 길 찾기 서비스는 시설에서 선택한 두 지점 사이의 가장 짧은 경로를 계산합니다. 이 서비스는 벽 및 기타 불침투성 구조물과 같은 구조물 주위를 탐색하여 경로를 만듭니다.

수직 침투

선택한 원점과 목적지가 서로 다른 층에 있는 경우 길 찾기 서비스는 수준 간에 수직으로 탐색할 수 있는 경로로 사용할 수 있는 verticalPenetration 개체(예: 계단 또는 엘리베이터)를 결정합니다. 기본적으로 최단 경로를 생성하는 옵션이 사용됩니다.

길 찾기 서비스는 수직 침투의 direction 속성 값에 따라 계단 또는 엘리베이터를 경로에 포함합니다. 방향 속성에 대한 자세한 내용은 Facility Ontology 문서의 verticalPenetration을 참조하세요. 층 수준 간의 경로를 선택하는 데 영향을 줄 수 있는 다른 요인에 대해 알아보려면 길 찾기 API 문서의 avoidFeaturesminWidth 속성을 참조하세요.

자세한 내용은 실내 맵 길 찾기 서비스 방법 문서를 참조하세요.

실내 맵 사용

Render - 맵 타일 가져오기 API

Azure Maps [Render - 맵 타일 가져오기] API가 Creator 타일 세트를 지원하도록 확장되었습니다.

애플리케이션은 Render - 맵 타일 가져오기 API를 사용하여 타일 세트를 요청할 수 있습니다. 그런 다음, 타일 세트를 맵 컨트롤 또는 SDK에 통합할 수 있습니다. Render Service를 사용하는 맵 컨트롤의 예는 실내 맵 모듈을 참조하세요.

웹 기능 서비스 API

WFS(Web Feature Service)를 사용하여 데이터 세트를 쿼리할 수 있습니다. WFS는 Open Geospatial Consortium API 기능을 따릅니다. WFS API를 사용하여 데이터 세트 자체 내의 기능을 쿼리할 수 있습니다. 예를 들어 WFS를 사용하여 특정 시설 및 층 수준의 모든 중간 규모 회의실을 찾을 수 있습니다.

별칭 API

변환, 데이터 세트, 타일 세트 및 기능 상태와 같은 Creator 서비스는 API에서 만든 각 리소스에 대한 식별자를 반환합니다. 별칭 API를 사용하면 리소스 식별자를 참조하는 별칭을 할당할 수 있습니다.

실내 맵 모듈

Azure Maps 웹 SDK에는 실내 맵 모듈이 포함되어 있습니다. 이 모듈은 확장된 기능을 Azure Maps 맵 컨트롤 라이브러리에 제공합니다. 실내 맵 모듈은 Creator에서 만든 실내 맵을 렌더링합니다. 층 선택기와 같은 위젯을 통합하여 사용자가 여러 층을 시각화할 수 있습니다.

실내 맵 모듈을 사용하여 실내 맵 데이터를 다른 Azure Maps 서비스와 통합하는 웹 애플리케이션을 만들 수 있습니다. 가장 일반적인 애플리케이션 설치에는 도로, 이미지, 날씨, 교통 체계와 같은 정보를 다른 맵에서 실내 맵에 추가하는 것이 포함될 수 있습니다.

실내 맵 모듈은 동적 맵 스타일 지정도 지원합니다. 애플리케이션에서 기능 상태 세트 동적 스타일 지정을 구현하는 방법에 대한 단계별 연습은 실내 맵 모듈 사용을 참조하세요.

Azure Maps 통합

실내 맵용 솔루션 개발을 시작하면서 기존 Azure Maps 기능을 통합하는 방법을 찾을 수 있습니다. 예를 들어 Creator 실내 맵에서 지오펜스 서비스를 사용하여 자산 추적 또는 안전 시나리오를 구현할 수 있습니다. 예를 들어, 지오펜스 API를 사용하여 작업자가 특정 실내 영역에 출입하는지 여부를 결정할 수 있습니다. IoT 원격 분석에 Azure Maps를 연결하는 방법에 대한 자세한 내용은 자습서: Azure Maps를 사용한 IoT 공간 분석 구현을 참조하세요.

데이터 유지 관리

Azure Maps Creator 나열, 업데이트 및 삭제 API를 사용하여 데이터 세트, 타일 세트 및 기능 상태 세트를 나열, 업데이트 및 삭제할 수 있습니다.

참고 항목

항목 목록을 검토하여 항목을 삭제할지 결정할 때 해당 삭제로 인해 모든 종속 API 또는 애플리케이션에 미치는 영향을 고려합니다. 예를 들어, [Render - 맵 타일 가져오기] API를 통해 애플리케이션에서 사용하는 타일 세트를 삭제하면 애플리케이션이 해당 타일 세트를 렌더링하지 못합니다.

예: 데이터 세트 업데이트

다음 예제에서는 데이터 세트를 업데이트하고, 새 타일 세트를 만들고, 이전 타일 세트를 삭제하는 방법을 보여 줍니다.

  1. 그리기 패키지 업로드그리기 패키지 변환 섹션의 단계에 따라 새 그리기 패키지를 업로드하고 변환합니다.
  2. 데이터 세트 만들기를 사용하여 변환된 데이터를 기존 데이터 세트에 추가합니다.
  3. 타일 세트 만들기를 사용하여 업데이트된 데이터 세트에서 새 타일 세트를 생성합니다.
  4. 다음 단계를 위해 새 tilesetId를 저장합니다.
  5. 업데이트된 캠퍼스 데이터 세트의 시각화를 사용하도록 설정하려면 애플리케이션의 타일 세트 식별자를 업데이트합니다. 이전 타일 세트가 더 이상 사용되지 않는 경우 삭제할 수 있습니다.

다음 단계