Использование геопространственной функции 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
работает.