Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As funções geoespaciais no Azure Stream Analytics permitem análises em tempo real em dados geoespaciais de streaming. Com apenas algumas linhas de código, é possível desenvolver uma solução de nível de produção para cenários complexos. Essas funções suportam todos os tipos WKT e ponto, polígono e LineString GeoJSON.
Exemplos de cenários que podem se beneficiar de funções geoespaciais incluem:
- Compartilhamento de percurso
- Gerenciamento de frota
- Acompanhamento de ativos
- Isolamento geográfico
- Rastreamento por telefone em sites de celular
A Linguagem de Consulta do Stream Analytics tem sete funções geoespaciais internas: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS e ST_WITHIN.
CreateLineString
A função CreateLineString
aceita pontos e retorna um LineString GeoJSON, que pode ser plotado como uma linha em um mapa. É necessário ter pelo menos dois pontos para criar um LineString. Os pontos de LineString serão conectados em ordem.
A consulta a seguir usa CreateLineString
para criar um LineString usando três pontos. O primeiro ponto é criado a partir dos dados de entrada de streaming, enquanto os outros dois são criados manualmente.
SELECT
CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))
FROM input
Exemplo de entrada
latitude | longitude |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Exemplo de saída
{"type" : "LineString", "coordinates" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}
{"type" : "LineString", "coordinates" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}
Para saber mais, visite a referência CreateLineString.
CreatePoint
A função CreatePoint
aceita uma latitude e longitude e retorna um ponto GeoJSON, que pode ser plotado em um mapa. As latitudes e longitudes devem ser um tipo de dados float.
A consulta de exemplo a seguir usa CreatePoint
para criar um ponto usando latitudes e longitudes dos dados de entrada de streaming.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Exemplo de entrada
latitude | longitude |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Exemplo de saída
{"type" : "Point", "coordinates" : [-10.2, 3.0]}
{"type" : "Point", "coordinates" : [20.2321, -87.33]}
Para saber mais, visite a referência CreatePoint.
CreatePolygon
A função CreatePolygon
aceita pontos e retorna um registro de polígono GeoJSON. A ordem dos pontos deve seguir a orientação do polígono direito ou sentido anti-horário. Imagine andar de um ponto a outro na ordem em que foram declarados. O centro do polígono estaria à esquerda o tempo todo.
A consulta de exemplo a seguir usa CreatePolygon
para criar um polígono a partir de três pontos. Os dois primeiros pontos são criados manualmente e o último ponto é criado a partir dos dados de entrada.
SELECT
CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))
FROM input
Exemplo de entrada
latitude | longitude |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Exemplo de saída
{"type" : "Polygon", "coordinates" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}
{"type" : "Polygon", "coordinates" : [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}
Para saber mais, visite a referência CreatePolygon.
ST_DISTANCE
A função ST_DISTANCE
retorna a distância entre dois polígonos, em metros.
A consulta a seguir usa ST_DISTANCE
para gerar um evento quando um posto de gasolina está a menos de 10 km do carro.
SELECT Cars.Location, Station.Location
FROM Cars c
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000
Para saber mais, visite a referência ST_DISTANCE.
ST_OVERLAPS
A função ST_OVERLAPS
compara dois polígonos. Se os polígonos se sobrepuserem, a função retornará 1. A função retornará 0, se os polígonos não se sobrepuserem.
A consulta a seguir usa ST_OVERLAPS
para gerar um evento quando uma construção estiver dentro de uma possível zona de inundação.
SELECT Building.Polygon, Building.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon)
A consulta de exemplo a seguir gera um evento quando uma tempestade indo em direção a um carro.
SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Para saber mais, visite a referência ST_OVERLAPS.
ST_INTERSECTS
A função ST_INTERSECTS
compara dois polígonos. Se houver intersecção entre os polígonos, a função retornará 1. Se não houver, a função retornará 0.
A consulta de exemplo a seguir usa ST_INTERSECTS
para determinar se uma estrada pavimentada intersecciona uma estrada de terra.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Exemplo de entrada
datacenterArea | stormArea |
---|---|
{"tipo":"LineString", "coordenadas": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"tipo":"LineString", "coordenadas": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]} |
{"tipo":"LineString", "coordenadas": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"tipo":"LineString", "coordenadas": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]} |
Exemplo de saída
1
0
Para saber mais, visite a referênciaST_INTERSECTS.
ST_WITHIN
A função ST_WITHIN
determina se um polígono está dentro de outro. Se o primeiro estiver contido no segundo, a função retornará 1. Se não estiver, a função retornará 0.
A consulta de exemplo a seguir usa ST_WITHIN
para determinar se o ponto de destino de entrega está dentro do polígono do depósito especificado.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Exemplo de entrada
deliveryDestination | depósito |
---|---|
{"tipo":"Ponto", "coordenadas": [76.6, 10.1]} | {"tipo":"Polígono", "coordenadas": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]} |
{"tipo":"Ponto", "coordenadas": [15.0, 15.0]} | {"tipo":"Polígono", "coordenadas": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]} |
Exemplo de saída
0
1
Para saber mais, visite a referência ST_WITHIN.