Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Геопространственные функции в Azure Stream Analytics позволяют аналитику в режиме реального времени для потоковых геопространственных данных. С помощью нескольких строк кода вы можете разработать решение для рабочего класса для сложных сценариев. Эти функции поддерживают все типы WKT и GeoJSON Point, Polygon и LineString.
Примеры сценариев, которые могут выиграть от использования геопространственных функций, включают:
- Совместное использование поездок
- Управление флотом
- Отслеживание активов
- Геозонирование
- Отслеживание телефонов между сотовыми вышками
Язык запросов Stream Analytics имеет семь встроенных геопространственных функций: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS и ST_WITHIN.
CreateLineString
Функция CreateLineString принимает точки и возвращает GeoJSON LineString, которая может быть выложена в виде строки на карте. Для создания LineString необходимо иметь по крайней мере две точки. Точки LineString будут подключены по порядку.
Следующий запрос использует CreateLineString для создания LineString из трех точек. Первая точка создается из потоковых входных данных, а остальные два создаются вручную.
SELECT
CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))
FROM input
Пример ввода
| широта | долгота |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Пример выходных данных
{"type" : "LineString", "координаты" : [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}
{"type" : "LineString", "координаты": [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}
Дополнительные сведения см. в справочнике CreateLineString .
CreatePoint
Функция CreatePoint принимает широту и долготу и возвращает точку GeoJSON, которая может быть выложена на карте. Ваши широты и долготы должны быть типом данных float.
В следующем примере запроса используется CreatePoint для создания точки с использованием широт и долгот из потоковых входных данных.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Пример ввода
| широта | долгота |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Пример выходных данных
{"type" : "Point", "координаты": [-10.2, 3.0]}
{"type" : "Point", "координаты": [20.2321, -87.33]}
Дополнительные сведения вы можете найти, обратившись к справочной информации о CreatePoint.
CreatePolygon
Функция CreatePolygon принимает точки и возвращает запись многоугольника GeoJSON. Порядок точек должен соответствовать правой кольцевой ориентации или по часовой стрелке. Представьте себе ходьбу от одной точки к другой в порядке, в котором они были объявлены. Центр многоугольника будет слева от вас всё время.
В следующем примере запроса используется CreatePolygon для создания многоугольника из трех точек. Первые две точки создаются вручную, а последняя точка создается из входных данных.
SELECT
CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))
FROM input
Пример ввода
| широта | долгота |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Пример выходных данных
{"type" : "Polygon", "координаты": [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}
{"type" : "Polygon", "координаты": [[ [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}
Дополнительные сведения см. в справочнике CreatePolygon .
ST_DISTANCE
Функция ST_DISTANCE возвращает расстояние между двумя геометриями в метрах.
Следующий запрос используется ST_DISTANCE для создания события, когда заправочная станция меньше 10 км от автомобиля.
SELECT Cars.Location, Station.Location
FROM Cars c
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000
Дополнительную информацию см. в справочнике ST_DISTANCE.
ST_OVERLAPS
Функция ST_OVERLAPS сравнивает две геометрии. Если геометрии перекрываются, функция возвращает значение 1. Функция возвращает значение 0, если геометрии не перекрываются.
Следующий запрос используется ST_OVERLAPS для создания события, когда здание находится в пределах возможной зоны наводнения.
SELECT Building.Polygon, Building.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon)
В следующем примере запроса возникает событие, когда шторм направляется к машине.
SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Дополнительные сведения см. в справочнике ST_OVERLAPS.
ST_INTERSECTS
Функция ST_INTERSECTS сравнивает две геометрии. Если геометрии пересекаются, функция возвращает значение 1. Функция возвращает значение 0, если геометрии не пересекаются друг с другом.
В следующем примере запроса используется ST_INTERSECTS для определения того, пересекается ли асфальтированная дорога с грунтовой дорогой.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Пример ввода
| зонаЦентраОбработкиДанных | Штормовая зона |
|---|---|
| {"type":"LineString", "координаты": [[-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "координаты": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]} |
| {"type":"LineString", "координаты": [[-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "координаты": [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]} |
Пример выходных данных
1
0
Дополнительную информацию смотрите в справочнике ST_INTERSECTS.
ST_WITHIN
Функция ST_WITHIN определяет, находится ли геометрия в другой геометрии. Если первая содержится в последней, функция вернет 1. Функция возвращает значение 0, если первая геометрия не находится в последней.
Следующий пример запроса используется ST_WITHIN для определения того, находится ли точка назначения доставки в пределах заданного многоугольника склада.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Пример ввода
| место доставки | warehouse |
|---|---|
| {"type":"Point", "координаты": [76.6, 10.1]} | {"type":"Polygon", "координаты": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]} |
| {"type":"Point", "координаты": [15.0, 15.0]} | {"type":"Polygon", "координаты": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0,0], [10.0], [10.0, 10.0] ]} |
Пример выходных данных
0
1
Для получения дополнительной информации обратитесь к справочнику ST_WITHIN.