Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.