Présentation des fonctions géospatiales Stream Analytics
Les fonctions géospatiales d’Azure Stream Analytics permettent d’effectuer une analytique en temps réel des données géospatiales de streaming. Avec seulement quelques lignes de code, vous pouvez développer une solution de production adaptée aux scénarios complexes. Ces fonctions prennent en charge tous les types WKT et les géométries GeoJSON Point, Polygon et LineString.
Voici quelques exemples de scénarios qui peuvent bénéficier des fonctions géospatiales :
- Le covoiturage
- La gestion de flotte
- Suivi des ressources
- Délimitation géographique
- Traçage des téléphones sur les stations cellulaires
Le langage de requête Stream Analytics possède sept fonctions géospatiales intégrées : CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS et ST_WITHIN.
CreateLineString
La fonction CreateLineString
accepte des points et retourne un LineString GeoJSON, qui peut être tracé sous la forme d’une ligne sur une carte. Vous devez avoir au moins deux points pour créer un LineString. Les points LineString seront connectés dans l’ordre.
La requête suivante utilise CreateLineString
pour créer un LineString à l’aide de trois points. Le premier point est créé à partir des données d’entrée de streaming, et les deux autres sont créés manuellement.
SELECT
CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))
FROM input
Exemple d’entrée
latitude | longitude |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Exemple de sortie
{"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] ]}
Pour plus d’informations, consultez la référence CreateLineString.
CreatePoint
La fonction CreatePoint
accepte une latitude et une longitude, et retourne un point GeoJSON, qui peut être tracé sur une carte. Le type de données de vos latitudes et de vos longitudes doit être float.
L’exemple de requête suivant utilise CreatePoint
pour créer un point à l’aide des latitudes et des longitudes issues des données d’entrée de streaming.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Exemple d’entrée
latitude | longitude |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Exemple de sortie
{"type" : "Point", "coordinates" : [-10.2, 3.0]}
{"type" : "Point", "coordinates" : [20.2321, -87.33]}
Pour plus d’informations, consultez la référence CreatePoint.
CreatePolygon
La fonction CreatePolygon
accepte des points et retourne un enregistrement de polygone GeoJSON. L’ordre des points doit respecter le sens antihoraire. Imaginez-vous marcher d’un point à l’autre dans l’ordre dans lequel ils sont déclarés. Le centre du polygone se trouverait toujours sur votre gauche.
L’exemple de requête suivant utilise CreatePolygon
pour créer un polygone à partir de trois points. Les deux premiers points sont créés manuellement, et le dernier point est créé à partir des données d’entrée.
SELECT
CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))
FROM input
Exemple d’entrée
latitude | longitude |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Exemple de sortie
{"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] ]]}
Pour plus d’informations, consultez la référence CreatePolygon.
ST_DISTANCE
La fonction ST_DISTANCE
retourne la distance en mètres entre deux géométries.
La requête suivante utilise ST_DISTANCE
pour générer un événement lorsqu’une station-service se trouve à moins de 10 kilomètres de votre voiture.
SELECT Cars.Location, Station.Location
FROM Cars c
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000
Pour plus d’informations, consultez la référence ST_DISTANCE.
ST_OVERLAPS
La fonction ST_OVERLAPS
compare deux géométries. Si les géométries se chevauchent, la fonction retourne la valeur 1. Si les géométries ne se chevauchent pas, la fonction retourne la valeur 0.
La requête suivante utilise ST_OVERLAPS
pour générer un événement lorsqu’un bâtiment se trouve dans une zone inondable.
SELECT Building.Polygon, Building.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon)
La requête suivante génère un événement lorsqu’une tempête arrive en direction d’une voiture.
SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Pour plus d’informations, consultez la référence ST_OVERLAPS.
ST_INTERSECTS
La fonction ST_INTERSECTS
compare deux géométries. Si les géométries se croisent, la fonction retourne la valeur 1. Si les géométries ne se croisent pas, la fonction retourne la valeur 0.
L’exemple de requête suivant utilise ST_INTERSECTS
pour déterminer si une route pavée croise un chemin de terre.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Exemple d’entrée
datacenterArea | stormArea |
---|---|
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "coordinates": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]} |
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "coordinates": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]} |
Exemple de sortie
1
0
Pour plus d’informations, consultez la référence ST_INTERSECTS.
ST_WITHIN
La fonction ST_WITHIN
détermine si une géométrie se trouve dans une autre géométrie. Si la première est contenue dans la dernière, la fonction retourne la valeur 1. Si la première géométrie n’est pas située dans la dernière, la fonction retourne la valeur 0.
L’exemple de requête suivant utilise ST_WITHIN
pour déterminer si le point de la destination de livraison se trouve dans le polygone d’entrepôt donné.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Exemple d’entrée
deliveryDestination | warehouse |
---|---|
{"type":"Point", "coordinates": [76.6, 10.1]} | {"type":"Polygon", "coordinates": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]} |
{"type":"Point", "coordinates": [15.0, 15.0]} | {"type":"Polygon", "coordinates": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]} |
Exemple de sortie
0
1
Pour plus d’informations, consultez la référence ST_WITHIN.