Stream Analytics coğrafi işlevlerine giriş

Azure Stream Analytics'teki uzamsal işlevler, araç paylaşımı, filo yönetimi, varlık takibi, coğrafi sınırlandırma ve hücresel baz istasyonları genelinde telefon takibi gibi senaryolarda, akış halindeki coğrafi veriler üzerinde gerçek zamanlı analiz yapılmasını sağlar. Sadece birkaç satır sorgu koduyla, Stream Analytics Query Language'deki yedi yerleşik fonksiyonu (CreateLineString, CreatePoint, CreatePolygon, ST_INTERSECTSST_DISTANCEST_OVERLAPS, ve ST_WITHIN), kullanan çözümler oluşturabilirsiniz; bu fonksiyonlar tüm WKT türlerini ve GeoJSON nokta, çokgen ve LineString'i destekler. Bu makale her bir fonksiyonu açıklar ve kendi akış verilerinize uygulayabilmeniz için örnek sorgular gösterir.

Geometri türleri ve koordinat sırası

Coğrafi fonksiyonlar üç GeoJSON geometri tipiyle çalışır. Bir nokta, boylam ve enlemle tanımlanan tek bir konumdur. LineString, bir güzergah veya yol gibi bağlı bir hat oluşturan iki veya daha fazla noktadan oluşan düzenli bir kümedir. Bir çokgen, sınırı başlangıç noktasına dönen kapalı bir şekildir; örneğin bir bina ayak izi veya coğrafi çit gibi.

Fonksiyonlar iki gruba ayrılır. Yapıcı fonksiyonlar (CreatePoint, CreateLineString, ve CreatePolygon) etkinlik verilerinizdeki koordinat değerlerinden geometriler oluşturur. İlişki fonksiyonları (ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS, ve ST_WITHIN) iki geometriyi karşılaştırır ve uzayda nasıl ilişkili olduklarını açıklar.

GeoJSON'da koordinatlar önce boylam, ikincisi olarak enlem sıralanır, böylece ortaya çıkan geometride giriş enlemi ve boylam ters sırayla görünür. Bu sıralamayı ve çokgenlerin gerektirdiği saat yönünün ters yönündeki halka yönünü anlamak, her fonksiyonun çıktısını tahmin etmenize yardımcı olur.

CreateLineString

CreateLineString GeoJSON LineString döndüren bir yapıcı fonksiyondur; bu, bir haritada birbirine bağlı nokta dizisini bir doğruluk olarak temsil eden bir geometridir. İki veya daha fazla noktayı kabul eder ve bunları listelediğiniz sırayla birbirine bağlar; bu da akış verilerinden rotaları, yolları ve yol segmentlerini modellemek için doğal bir yol haline getirir.

Aşağıdaki örnek, üç noktayı bir LineString'e birleştirerek bu davranışı göstermektedir. İlk nokta akıştan gelen giriş verisinden gelir ve diğer ikisini manuel olarak tanımlarsınız.

SELECT  
     CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))  
FROM input  

Giriş örneği

enlem 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 için CreateLineString referansına bakınız.

CreatePoint

CreatePoint bir enlem ve boylamdan bir GeoJSON noktası döndüren bir yapıcı fonksiyondur. Bir nokta en temel geometridir ve haritada tek bir konumu, örneğin bir aracın veya varlığın mevcut konumunu temsil eder. Enlem ve boylam değerleri bir float veri tipi olmalıdır.

Aşağıdaki örnek, akış girdi verilerindeki enlem ve boylam değerlerinden bir nokta oluşturarak bu davranışı göstermektedir.

SELECT  
     CreatePoint(input.latitude, input.longitude)  
FROM input 

Giriş örneği

enlem boylam
3.0 -10.2
-87.33 20.2321

Çıkış örneği

{"type" : "Nokta", "koordinatlar" : [-10.2, 3.0]}

{"type" : "Nokta", "koordinatlar" : [20.2321, -87.33]}

Daha fazla bilgi için CreatePoint referansına bakınız.

CreatePolygon

CreatePolygon bir yapıcı fonksiyondur ve bir nokta kümesinden GeoJSON çokgenini döndürür. Bir çokgen, haritada kapalı bir alanı temsil eder; örneğin bina ayak izi, depo sınırı veya coğrafi çit gibi. Noktaların sırası, sağ el kuralına uygun halka yönelimini, yani saat yönünün tersini izler: noktaları belirttiğiniz sırayla bir noktadan diğerine yürüdüğünüzü hayal ederseniz, çokgenin merkezi sürekli solunuzda kalır.

Aşağıdaki örnek, üç noktadan bir çokgen oluşturarak bu davranışı göstermektedir. İlk iki noktayı manuel olarak tanımlıyorsunuz, son nokta ise giriş verisinden geliyor.

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

enlem boylam
3.0 -10.2
-87.33 20.2321

Çıkış örneği

{"type" : "Polygon", "koordinatlar" : [[ [-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şvuru sayfasını ziyaret edin.

ST_DISTANCE

ST_DISTANCE iki geometri arasındaki mesafeyi metre cinsinden geri getiren bir ilişki fonksiyonudur. İki konumun ne kadar yakın veya uzak olduğunu anlamanıza yardımcı olur; bu da yakındaki araç uyarıları ve servis alanı hesaplamaları gibi yakınlık senaryoları için faydalıdır.

Aşağıdaki örnek, bir benzin istasyonunun bir arabaya 10 km'den daha az mesafede olduğunu belirlemek için bu fonksiyonun nasıl kullanılacağını göstermektedir.

SELECT Cars.Location, Station.Location 
FROM Cars c  
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000

Daha fazla bilgi için ST_DISTANCE referansına bakabilirsiniz.

ST_OVERLAPS

ST_OVERLAPS iki geometriyi karşılaştıran ve ortak bir bölgeyi paylaşıp paylaşmadıklarını bildiren bir ilişki fonksiyonudur. Geometriler örtüştüğünde 1, örtüşmediklerinde ise 0 döner. Bu fonksiyon, ilgi alanına dokunan bir tehlike bölgesi gibi mekânsal çatışmaları tespit etmek için faydalıdır.

Aşağıdaki örnek, bir binanın olası bir sel bölgesi içinde ne zaman olduğunu belirlemek için bu fonksiyonun nasıl kullanılacağını gösterir.

SELECT Building.Polygon, Flooding.Polygon
FROM Building b 
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, f.Polygon)

Bir sonraki örnek de, bir fırtınanın bir arabaya doğru ilerlediğini algılamak için ST_OVERLAPS kullanır.

SELECT Cars.Location, Storm.Course
FROM Cars c
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)

Daha fazla bilgi için ST_OVERLAPS referansına bakabilirsiniz.

ST_INTERSECTS

ST_INTERSECTS iki geometriyi karşılaştıran ve onların kesişip örtüşmediğini veya dokunup dokunmadığını bildiren bir ilişki fonksiyonudur. Geometriler kesiştiğinde 1, kesişmediğinde 0 döner. Bu fonksiyon, yolların veya bölgelerin nerede buluştuğunu tespit etmenize yardımcı olur.

Aşağıdaki örnek, asfalt bir yolun toprak yolla kesişip kesişmediğini belirlemek için bu fonksiyonun nasıl kullanılacağını gösterir.

SELECT  
     ST_INTERSECTS(input.pavedRoad, input.dirtRoad)  
FROM input  

Giriş örneği

Asfalt Yol toprak yol
{"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 referansını ziyaret edin.

ST_WITHIN

ST_WITHIN bir geometrinin diğerinin içinde tamamen yer alıp olmadığını bildiren bir ilişki fonksiyonudur. İlk geometri ikinci geometrinin içinde olduğunda 1, olmadığında ise 0 döndürür; bu da coğrafi çit ve teslimat bölgesi kontrolleri gibi kontrol senaryolarının temelini oluşturur.

Aşağıdaki örnek, teslimat varış noktasının belirli bir depo çokgeninde olup olmadığını belirleyerek bu davranışı göstermektedir.

SELECT  
     ST_WITHIN(input.deliveryDestination, input.warehouse)  
FROM input 

Giriş örneği

teslimatYeri warehouse
{"type":"Point", "coordinates": [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şvurusuna ziyaret edin.