Использование геопространственной функции Stream Analytics

Я хочу использовать геопространственные функции Stream Analytics с использованием данных широты / долготы (отправленных через Azure IoTHub) и целевых данных широты / долготы или полигонов (из эталонного ввода).

Я знаю, что мы можем объединять потоковые и эталонные входы в запросе, но возможно ли реализовать решение, у нас нет данных для объединения между потоковыми и эталонными входами и при этом вычислить, например, расстояние между точками, используя ST_DISTANCE?

Пример эталонных входных данных:

"points":[
{
    "point": {
    "type" : "Point",
    "coordinates" : [0.0, 10.0] } 
},
{
    "point": {
    "type" : "Point",
    "coordinates" : [0.0, 0.0] }
},
{
    "point": {
    "type" : "Point",
    "coordinates" : [0.0, -5.0] }
}]

Приведенные выше данные будут иметь больше точек, поэтому ввод точек в запросе вручную не будет хорошим решением.

Я ожидаю, что результат будет содержать сравниваемые точки и их расстояние.

1 ответ

Решение

Поиграв с SQL-запросом, я обнаружил, что на самом деле CROSS JOIN доступно в Stream Analytics, но отсутствует в документации. Таким образом, используя что-то вроде:

SELECT ST_DISTANCE(CreatePoint(input.Lat, input.Lon), CreatePoint(ref.Lat, ref.Lon)) 
INTO output FROM inputStream input 
CROSS JOIN reference ref

работает.

Другие вопросы по тегам