Ошибка запроса WSO2CEP Siddhi с использованием гео в функции

Я использую расширение 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;

Когда я запускаю свой план выполнения в Siddhi Try It Tool консоли управления WSO2CEP, возникает следующая ошибка:

У вас есть ошибка в вашем SiddhiQL в строке 16:108, нет жизнеспособной альтернативы при вводе '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]]]}'

Я не знаю, почему возникает эта ошибка.

Буду очень признателен, если кто-нибудь поможет мне в этом вопросе.

Спасибо!


person fay    schedule 21.04.2017    source источник


Ответы (1)


Я решил ошибку. Ошибка существовала, потому что она должна была включать {"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]]]}", потому что это строковое значение, как это объяснено в синтаксисе функции geo:within в расширении Siddhi Geo (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;
person fay    schedule 26.04.2017