Aracılığıyla paylaş


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.

Sonraki adımlar