Fiware Orion: фильтры геолокации для подписок

Я знаю, что вы можете queryContext Орион использовать фильтры геолокации.

Можно ли сделать аналогичную фильтрацию в сценарии подписки? Другими словами, могу ли я быть уведомлен об изменениях атрибутов объекта контекста, только когда атрибут возможности находится внутри предопределенной области?

Например: введите описание изображения здесь

Спасибо.


person eversor    schedule 15.04.2015    source источник


Ответы (1)


Протокол NGSI учитывает возможность указания ограничений на подписки. Таким образом, операция subscribeContext поддерживает ограничение FIWARE :: Location для подписок.

Итак, ответ: да.

Пример

Создайте объект с помощью POST queryContext:

{
  "contextElements": [
  {
    "type": "City",
    "isPattern": "false",
    "id": "Madrid",
    "attributes": [
    {
      "name": "position",
      "type": "coords",
      "value": "1, 1",
      "metadatas": [
      {
        "name": "location",
        "type": "string",
        "value": "WGS84"
      }
      ]
    },
    {
      "name": "a1",
      "type": "string",
      "value": "v1"
    }
    ]
  }
  ],
  "updateAction": "APPEND"
}

Подпишитесь на изменения в области с помощью POST subscribeContext:

{
  "entities": [
      {
          "type": "City",
          "isPattern": "true",
          "id": ".*"
      }
  ],
  "attributes": [
      "a1"
  ],
  "reference": "http://<host>:<port>/notify",
  "duration": "P1M",
  "notifyConditions": [
      {
          "type": "ONCHANGE",
          "condValues": [
              "a1"
          ]
      }
  ],
   "restriction": {
      "scopes": [
      {
        "type" : "FIWARE::Location",
        "value" : {
          "polygon": {
            "vertices": [
            {
              "latitude": "0",
              "longitude": "0"
            },
            {
              "latitude": "0",
              "longitude": "6"
            },
            {
              "latitude": "6",
              "longitude": "6"
            },
            {
              "latitude": "6",
              "longitude": "0"
            }
            ]
          }
        }
      }
      ]
    }
}

А затем просто обновите значение a1 объекта и посмотрите, что произойдет.

person LeandroGuillen    schedule 16.04.2015