Inleiding tot georuimtelijke functies van Stream Analytics
Georuimtelijke functies in Azure Stream Analytics maken realtime analyses mogelijk voor het streamen van georuimtelijke gegevens. Met slechts een paar regels code kunt u een oplossing op productieniveau ontwikkelen voor complexe scenario's. Deze functies ondersteunen alle WKT-typen en GeoJSON Point, Polygon en LineString.
Voorbeelden van scenario's die kunnen profiteren van georuimtelijke functies zijn:
- Rit delen
- Vlootbeheer
- Bijhouden van assets
- Geo-fencing
- Telefoontracering tussen mobiele sites
Stream Analytics Query Language heeft zeven ingebouwde georuimtelijke functies: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS en ST_WITHIN.
CreateLineString
De CreateLineString
functie accepteert punten en retourneert een GeoJSON LineString, die kan worden uitgezet als een lijn op een kaart. U moet ten minste twee punten hebben om een LineString te maken. De LineString-punten worden op volgorde verbonden.
De volgende query gebruikt CreateLineString
om een LineString te maken met behulp van drie punten. Het eerste punt wordt gemaakt op basis van streaming-invoergegevens, terwijl de andere twee handmatig worden gemaakt.
SELECT
CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))
FROM input
Invoervoorbeeld
breedtegraad | lengtegraad |
---|---|
3,0 | -10.2 |
-87.33 | 20.2321 |
Voorbeeld van uitvoer
{"type" : "LineString", "coördinaten" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}
{"type" : "LineString", "coördinaten" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}
Ga naar de CreateLineString-naslaginformatie voor meer informatie.
CreatePoint
De CreatePoint
functie accepteert een breedtegraad en lengtegraad en retourneert een GeoJSON-punt, dat kan worden uitgezet op een kaart. Uw breedte- en lengtegraden moeten een float-gegevenstype zijn.
In de volgende voorbeeldquery wordt gebruikgemaakt CreatePoint
van het maken van een punt met behulp van breedtegraden en lengtegraden op basis van streaming-invoergegevens.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Invoervoorbeeld
breedtegraad | lengtegraad |
---|---|
3,0 | -10.2 |
-87.33 | 20.2321 |
Voorbeeld van uitvoer
{"type" : "Punt", "coördinaten" : [-10.2, 3.0]}
{"type" : "Punt", "coördinaten" : [20.2321, -87.33]}
Ga naar de CreatePoint-verwijzing voor meer informatie.
CreatePolygon
De CreatePolygon
functie accepteert punten en retourneert een GeoJSON-veelhoekrecord. De volgorde van de punten moet de richting van de rechterring of linksom volgen. Stel je voor dat je van het ene punt naar het andere loopt in de volgorde waarin ze zijn aangegeven. Het midden van de veelhoek zou de hele tijd links van je zijn.
De volgende voorbeeldquery gebruikt CreatePolygon
om een veelhoek te maken op basis van drie punten. De eerste twee punten worden handmatig gemaakt en het laatste punt wordt gemaakt op basis van invoergegevens.
SELECT
CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))
FROM input
Invoervoorbeeld
breedtegraad | lengtegraad |
---|---|
3,0 | -10.2 |
-87.33 | 20.2321 |
Voorbeeld van uitvoer
{"type" : "Veelhoek", "coördinaten" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}
{"type" : "Polygon", "coördinaten" : [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}
Ga voor meer informatie naar de naslaginformatie over CreatePolygon .
ST_DISTANCE
De ST_DISTANCE
functie retourneert de afstand tussen twee geometrieën in meters.
De volgende query wordt gebruikt ST_DISTANCE
om een gebeurtenis te genereren wanneer een tankstation zich op minder dan 10 km van de auto bevindt.
SELECT Cars.Location, Station.Location
FROM Cars c
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000
Ga naar de ST_DISTANCE referentie voor meer informatie.
ST_OVERLAPS
De ST_OVERLAPS
functie vergelijkt twee geometrieën. Als de geometrieën elkaar overlappen, retourneert de functie een 1. De functie retourneert 0 als de geometrieën elkaar niet overlappen.
De volgende query gebruikt ST_OVERLAPS
om een gebeurtenis te genereren wanneer een gebouw zich binnen een mogelijke overstromingszone bevindt.
SELECT Building.Polygon, Building.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon)
De volgende voorbeeldquery genereert een gebeurtenis wanneer een storm op weg is naar een auto.
SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Ga naar de ST_OVERLAPS referentie voor meer informatie.
ST_INTERSECTS
De ST_INTERSECTS
functie vergelijkt twee geometrieën. Als de geometrieën elkaar snijden, retourneert de functie 1. De functie retourneert 0 als de geometrieën elkaar niet snijden.
De volgende voorbeeldquery wordt gebruikt ST_INTERSECTS
om te bepalen of een geplaveide weg een onverharde weg doorkruist.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Invoervoorbeeld
datacenterArea | stormArea |
---|---|
{"type":"LineString", "coördinaten": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "coördinaten": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]} |
{"type":"LineString", "coördinaten": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "coördinaten": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]} |
Voorbeeld van uitvoer
1
0
Ga voor meer informatie naar de naslaginformatie over ST_INTERSECTS .
ST_WITHIN
De ST_WITHIN
functie bepaalt of een geometrie zich binnen een andere geometrie bevindt. Als de eerste is opgenomen in de laatste, retourneert de functie 1. De functie retourneert 0 als de eerste geometrie zich niet binnen de laatste bevindt.
In de volgende voorbeeldquery wordt gebruikt ST_WITHIN
om te bepalen of het leveringsdoelpunt zich binnen de opgegeven magazijnveelhoek bevindt.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Invoervoorbeeld
deliveryDestination | Magazijn |
---|---|
{"type":"Point", "coördinaten": [76.6, 10.1]} | {"type":"Polygon", "coördinaten": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]} |
{"type":"Punt", "coördinaten": [15.0, 15.0]} | {"type":"Veelhoek", "coördinaten": [ [10,0, 10,0], [20,0, 10,0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]} |
Uitvoervoorbeeld
0
1
Ga voor meer informatie naar de referentie voor ST_WITHIN .