Запрос наборов данных с помощью службы веб-компонентов

В этой статье описывается, как запрашивать наборы данных создателя Azure Карты с помощью веб-службы компонентов (WFS). API WFS можно использовать для запроса ко всем коллекциям компонентов или определенной коллекции в наборе данных. Например, WFS можно использовать для поиска всех конференц-залов среднего размера на конкретном этаже здания.

Необходимые компоненты

В этой статье используется та же схема помещений, что и в руководстве. Создание карт помещений с помощью Creator.

Внимание

  • В этой статье используется географический URL-адрес us.atlas.microsoft.com. Если ваша служба Создателя была создана за пределами США, используйте другой географический URL-адрес. Дополнительные сведения см. в статье о доступе к службам Создателя.
  • В примерах URL-адресов в этой статье необходимо заменить:
    • {Azure-Maps-Subscription-key}с ключом подписки azure Карты.
    • {datasetId}datasetId с полученным в разделе "Проверка состояния создания набора данных" руководства по созданию схем помещений с помощью Создателя.

Запрос коллекций объектов

Чтобы запросить все коллекции в наборе данных, создайте новый HTTP-запрос GET:

Введите следующий URL-адрес к API WFS: Запрос должен выглядеть, как в этом URL-адресе:

https://us.atlas.microsoft.com/wfs/datasets/{datasetId}/collections?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=2.0

Текст ответа будет возвращен в формате GeoJSON и будет содержать все коллекции этого набора данных. Для простоты в этом примере показана только коллекция unit. Пример, содержащий все коллекции, см. в разделе API коллекций описания WFS. Чтобы узнать больше о той или иной коллекции, можно выбрать любой URL-адрес в элементе links.

{
"collections": [
    {
        "name": "unit",
        "description": "A physical and non-overlapping area which might be occupied and traversed by a navigating agent. Can be a hallway, a room, a courtyard, etc. It is surrounded by physical obstruction (wall), unless the is_open_area attribute is equal to true, and one must add openings where the obstruction shouldn't be there. If is_open_area attribute is equal to true, all the sides are assumed open to the surroundings and walls are to be added where needed. Walls for open areas are represented as a line_element or area_element with is_obstruction equal to true.",
        "links": [
            {
                "href": "https://atlas.microsoft.com/wfs/datasets/{datasetId}/collections/unit/definition?api-version=1.0",
                "rel": "describedBy",
                "title": "Metadata catalogue for unit"
            },
            {
                "href": "https://atlas.microsoft.com/wfs/datasets/{datasetId}/collections/unit/items?api-version=1.0",
                "rel": "data",
                "title": "unit"
            }
            {
                "href": "https://atlas.microsoft.com/wfs/datasets/{datasetId}/collections/unit?api-version=1.0",
                "rel": "self",
                "title": "Metadata catalogue for unit"
            }
        ]
    },

Запрос определенной коллекции объектов

В этом разделе показано, как запрашивать API WFS для unit коллекции компонентов.

Чтобы запросить коллекцию единиц в наборе данных, создайте новый HTTP-запрос GET:

https://us.atlas.microsoft.com/wfs/datasets/{datasetId}/collections/unit/items?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=2.0

Получив ответ, скопируйте значение id объекта для одного из объектов unit. В следующем примере id функции — "UNIT26". При обновлении состояния компонента используйте unit26 в качестве функций.id

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": ["..."]
            },
            "properties": {
                "original_id": "b7410920-8cb0-490b-ab23-b489fd35aed0",
                "category_id": "CTG8",
                "is_open_area": true,
                "navigable_by": [
                    "pedestrian"
                ],
                "route_through_behavior": "allowed",
                "level_id": "LVL14",
                "occupants": [],
                "address_id": "DIR1",
                "name": "157"
            },
            "id": "UNIT26",
            "featureType": ""
        }, {"..."}
    ]
}

Следующие шаги