Fiware Orion:订阅的地理位置过滤器

时间:2015-04-15 16:04:21

标签: fiware fiware-orion

我知道您可以使用地理定位过滤器queryContext Orion。

是否可以在订阅方案中进行类似的过滤?换句话说,当possition属性在预定义区域内时,是否可以通知上下文实体的属性更改

例如: enter image description here

感谢。

1 个答案:

答案 0 :(得分: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 的值,看看会发生什么。