WSO2CEP Siddhi 在函数内使用 geo 查询错误

WSO2CEP Siddhi query error using geo within function

我正在将函数内的 GEO 扩展用于执行计划。 我有多个事件流,其中包含传感器信息,包括每个传感器的位置(地理坐标)。 此外,我有一个多边形(下面的示例,其中包含每个点的坐标)。我想检查是否可以确定传感器是否在这个多边形的边界内。

我的执行计划如下:

@Plan:name('TestExecutionPlan')

define stream sensorStream (id string, lat double, longi double);

define stream outputStream (id string);

from sensorStream [geo:within(lat,longi,{"type": "Polygon", "coordinates": [[[37.9807986, 23.7262081],[37.9807986, 23.7262081],[37.9792256, 23.7302850],[37.9789888, 23.7268089],[37.9807986, 23.7262081]]]})]
select id
insert into outputStream;

当我在 WSO2CEP 管理控制台的 Siddhi Try It 工具中 运行 我的执行计划时,出现以下错误:

You have an error in your SiddhiQL at line 16:108, no viable alternative at input 'geo:within(sensorStream.lat, sensorStream.longi,{'type':'Polygon','coordinates':[[[37.9807986, 23.7262081],[37.9807986, 23.7262081],[37.9792256, 23.7302850],[37.9789888, 23.7268089],[37.9807986, 23.7262081]]]}'

我不知道为什么会出现这个错误。

如果有人能帮助我解决这个问题,我将不胜感激。

谢谢!

我解决了错误。 错误是存在的,因为它需要包含带有问号的 {"type": "Polygon", "coordinates": [[[-104.05,48.99],[-97.22,48.98],[-96.58,45.94],[-104.03,45.94],[-104.05,48.99]]]},即 "{"type": "Polygon", "coordinates": [[[-104.05,48.99],[-97.22,48.98],[-96.58,45.94],[-104.03,45.94],[-104.05,48.99]]]}",因为它是一个字符串值,正如它在 Siddhi 的 geo:within 函数的语法中所解释的那样地理扩展(https://docs.wso2.com/display/CEP420/Geo+Extension)。

因此,有效的执行计划如下:

@Plan:name('TestExecutionPlan')

define stream sensorStream (id string, lat double, longi double);

define stream outputStream (id string);

from sensorStream [geo:within(lat, longi, " { 'type': 'Polygon', 'coordinates': [[[37.9807986, 23.7262081],[37.9807986, 23.7262081],[37.9792256, 23.7302850],[37.9789888, 23.7268089],[37.9807986, 23.7262081]]] } " )]
 select id 
 insert into outputStream;