Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Geospatialfunktionen in Azure Stream Analytics ermöglichen Echtzeitanalysen beim Streamen von Geospatialdaten. Mit nur wenigen Codezeilen können Sie eine Produktionsqualitätslösung für komplexe Szenarien entwickeln. Diese Funktionen unterstützen alle WKT-Typen und GeoJSON Point, Polygon und LineString.
Beispiele für Szenarien, die von geospatialen Funktionen profitieren können, sind:
- Carsharing
- Flottenmanagement
- Bestandsverfolgung
- Geo-fencing
- Telefonverfolgung über Funkzellen hinweg
Die Stream Analytics-Abfragesprache verfügt über sieben integrierte Geospatialfunktionen: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS und ST_WITHIN.
CreateLineString
Die CreateLineString Funktion akzeptiert Punkte und gibt einen GeoJSON LineString zurück, der als Linie auf einer Karte gezeichnet werden kann. Sie müssen mindestens zwei Punkte haben, um eine LineString zu erstellen. Die LineString-Punkte werden in der Reihenfolge verbunden.
Die folgende Abfrage verwendet CreateLineString zum Erstellen eines LineString-Objekts mit drei Punkten. Der erste Punkt wird aus Streamingeingabedaten erstellt, während die anderen beiden manuell erstellt werden.
SELECT
CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))
FROM input
Eingabebeispiel
| latitude | Längengrad |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20,2321 |
Ausgabebeispiel
{"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] ]}
Weitere Informationen finden Sie in der CreateLineString-Referenz .
CreatePoint
Die CreatePoint Funktion akzeptiert einen Breiten- und Längengrad und gibt einen GeoJSON-Punkt zurück, der auf einer Karte gezeichnet werden kann. Ihre Breiten- und Längengrade müssen ein Float-Datentyp sein.
Die folgende Beispielabfrage verwendet CreatePoint zum Erstellen eines Punkts mit Breiten- und Längengraden aus Streamingeingabedaten.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Eingabebeispiel
| latitude | Längengrad |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Ausgabebeispiel
{"type" : "Point", "coordinates" : [-10.2, 3.0]}
{"type" : "Point", "coordinates" : [20.2321, -87.33]}
Weitere Informationen finden Sie in der CreatePoint-Referenz .
CreatePolygon
Die CreatePolygon Funktion akzeptiert Punkte und gibt einen GeoJSON-Polygondatensatz zurück. Die Reihenfolge der Punkte muss der Rechten-Hand-Ringausrichtung folgen bzw. entgegen dem Uhrzeigersinn verlaufen. Stellen Sie sich vor, sie gehen von einem Punkt zu einem anderen in der Reihenfolge, in der sie deklariert wurden. Der Mittelpunkt des Polygons würde die ganze Zeit zu Ihrer linken Seite liegen.
In der folgenden Beispielabfrage wird mithilfe von CreatePolygon ein Polygon aus drei Punkten erstellt. Die ersten beiden Punkte werden manuell erstellt, und der letzte Punkt wird aus Eingabedaten erstellt.
SELECT
CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))
FROM input
Eingabebeispiel
| latitude | Längengrad |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Ausgabebeispiel
{"type" : "Polygon", "koordinaten" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}
{"type" : "Polygon", "Koordinaten" : [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}
Weitere Informationen finden Sie in der CreatePolygon-Referenz .
ST_DISTANCE
Die ST_DISTANCE Funktion gibt den Abstand zwischen zwei Geometrien in Metern zurück.
Die folgende Abfrage verwendet ST_DISTANCE , um ein Ereignis zu generieren, wenn eine Tankstelle weniger als 10 km vom Auto entfernt ist.
SELECT Cars.Location, Station.Location
FROM Cars c
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000
Weitere Informationen finden Sie in der ST_DISTANCE Referenz.
ST_OVERLAPS
Die ST_OVERLAPS Funktion vergleicht zwei Geometrien. Wenn sich die Geometrien überschneiden, gibt die Funktion eine 1 zurück. Die Funktion gibt 0 zurück, wenn sich die Geometrien nicht überlappen.
Die folgende Abfrage verwendet ST_OVERLAPS , um ein Ereignis zu generieren, wenn sich ein Gebäude in einer möglichen Überschwemmungszone befindet.
SELECT Building.Polygon, Building.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon)
Die folgende Beispielabfrage generiert ein Ereignis, wenn ein Sturm in richtung eines Autos geht.
SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Weitere Informationen finden Sie in der ST_OVERLAPS Referenz.
ST_INTERSECTS
Die ST_INTERSECTS Funktion vergleicht zwei Geometrien. Wenn sich die Geometrien schneiden, dann gibt die Funktion 1 zurück. Die Funktion gibt 0 zurück, wenn sich die Geometrien nicht gegenseitig schneiden.
In der folgenden Beispielabfrage wird ST_INTERSECTS verwendet, um zu ermitteln, ob eine gepflasterte Straße eine unbefestigte Straße überschneidet.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Eingabebeispiel
| Rechenzentrumsbereich | 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] ]} |
Ausgabebeispiel
1
0
Weitere Informationen finden Sie in der ST_INTERSECTS Referenz.
ST_WITHIN
Die ST_WITHIN Funktion bestimmt, ob sich eine Geometrie innerhalb einer anderen Geometrie befindet. Wenn der erste in der letzten enthalten ist, gibt die Funktion 1 zurück. Die Funktion gibt 0 zurück, wenn sich die erste Geometrie nicht innerhalb der letzten Geometrie befindet.
In der folgenden Beispielabfrage wird ST_WITHIN verwendet, um zu bestimmen, ob sich der Zielpunkt des Lieferziels innerhalb des angegebenen Warehouse-Polygons befindet.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Eingabebeispiel
| Lieferziel | 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] ]} |
Ausgabebeispiel
0
1
Weitere Informationen finden Sie in der ST_WITHIN Referenz.