Stream Analytics jeo-uzamsal işlevlerine giriş
Azure Stream Analytics'teki jeo-uzamsal işlevler, jeo-uzamsal veri akışında gerçek zamanlı analize olanak tanır. Yalnızca birkaç satır kodla, karmaşık senaryolar için bir üretim notu çözümü geliştirebilirsiniz. Bu işlevler tüm WKT türlerini ve GeoJSON Noktası, Çokgen ve LineString'i destekler.
Jeo-uzamsal işlevlerden yararlanabilecek senaryolara örnek olarak şunlar verilebilir:
- Sürüş paylaşımı
- Filo yönetimi
- Varlık izleme
- Coğrafi çitleme
- Cep siteleri arasında telefon izleme
Stream Analytics Sorgu Dili'nin yedi yerleşik jeo-uzamsal işlevi vardır: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS ve ST_WITHIN.
CreateLineString
CreateLineString
işlevi noktaları kabul eder ve harita üzerinde çizgi olarak çizilebilen bir GeoJSON LineString döndürür. LineString oluşturmak için en az iki noktanız olmalıdır. LineString noktaları sırayla bağlanır.
Aşağıdaki sorgu, üç nokta kullanarak bir LineString oluşturmak için kullanır CreateLineString
. İlk nokta akış giriş verilerinden oluşturulurken, diğer ikisi el ile oluşturulur.
SELECT
CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))
FROM input
Giriş örneği
latitude | Boylam |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Çıkış örneği
{"type" : "LineString", "koordinatlar" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}
{"type" : "LineString", "koordinatlar" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}
Daha fazla bilgi edinmek için CreateLineString başvuruyu ziyaret edin.
CreatePoint
CreatePoint
işlevi enlem ve boylam kabul eder ve haritada çizilebilen bir GeoJSON noktası döndürür. Enlemleriniz ve boylamlarınız float veri türü olmalıdır.
Aşağıdaki örnek sorgu, akış giriş verilerinden enlemleri ve boylamları kullanarak bir nokta oluşturmak için kullanır CreatePoint
.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Giriş örneği
latitude | Boylam |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Çıkış örneği
{"type" : "Point", "coordinates" : [-10.2, 3.0]}
{"type" : "Point", "coordinates" : [20.2321, -87.33]}
Daha fazla bilgi edinmek için CreatePoint başvurusunu ziyaret edin.
CreatePolygon
CreatePolygon
işlevi noktaları kabul eder ve GeoJSON çokgen kaydı döndürür. Noktaların sırası sağ halka yönüne veya saat yönünün tersine doğru olmalıdır. Bir noktadan diğerine bildirildiği sırayla yürüdüğünü düşünün. Çokgenin merkezi tüm zaman boyunca solunuzda olur.
Aşağıdaki örnek sorgu, üç noktadan çokgen oluşturmak için kullanır CreatePolygon
. İlk iki nokta el ile oluşturulur ve son nokta giriş verilerinden oluşturulur.
SELECT
CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))
FROM input
Giriş örneği
latitude | Boylam |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Çıkış örneği
{"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] ]]}
Daha fazla bilgi edinmek için CreatePolygon başvuruyu ziyaret edin.
ST_DISTANCE
işlevi, ST_DISTANCE
metredeki iki geometri arasındaki mesafeyi döndürür.
Aşağıdaki sorgu, bir benzin istasyonu arabadan 10 km'den kısa olduğunda bir olay oluşturmak için kullanır ST_DISTANCE
.
SELECT Cars.Location, Station.Location
FROM Cars c
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000
Daha fazla bilgi edinmek için ST_DISTANCE başvuruyu ziyaret edin.
ST_OVERLAPS
ST_OVERLAPS
işlevi iki geometriyi karşılaştırır. Geometriler çakışırsa işlev 1 döndürür. Geometriler çakışmazsa işlev 0 döndürür.
Aşağıdaki sorgu, bir bina olası bir sel bölgesi içinde olduğunda bir olay oluşturmak için kullanır ST_OVERLAPS
.
SELECT Building.Polygon, Building.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon)
Aşağıdaki örnek sorgu, bir fırtına bir arabaya doğru giderken bir olay oluşturur.
SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Daha fazla bilgi edinmek için ST_OVERLAPS başvuruyu ziyaret edin.
ST_INTERSECTS
ST_INTERSECTS
işlevi iki geometriyi karşılaştırır. Geometriler kesişirse işlev 1 döndürür. Geometriler birbiriyle kesişmezse işlev 0 döndürür.
Aşağıdaki örnek sorgu, döşemeli bir yolun toprak yola kesişip kesişmediğini belirlemek için kullanır ST_INTERSECTS
.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Giriş örneği
datacenterArea | stormArea |
---|---|
{"type":"LineString", "koordinatlar": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "koordinatlar": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]} |
{"type":"LineString", "koordinatlar": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "koordinatlar": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]} |
Çıkış örneği
1
0
Daha fazla bilgi edinmek için ST_INTERSECTS başvuruyu ziyaret edin.
ST_WITHIN
işlevi geometrinin ST_WITHIN
başka bir geometri içinde olup olmadığını belirler. birincisi son içinde yer alırsa, işlev 1 döndürür. İlk geometri son geometrinin içinde yer almıyorsa işlev 0 döndürür.
Aşağıdaki örnek sorgu, teslim hedef noktasının verilen ambar çokgeninde olup olmadığını belirlemek için kullanır ST_WITHIN
.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Giriş örneği
deliveryDestination | Ambar |
---|---|
{"type":"Point", "koordinatlar": [76.6, 10.1]} | {"type":"Polygon", "koordinatlar": [ [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] ]} |
Çıkış örneği
0
1
Daha fazla bilgi edinmek için ST_WITHIN başvuruyu ziyaret edin.