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;
我正在将函数内的 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;