Pengantar fungsi geospasial dalam Azure Stream Analytics

Fungsi geospasial di Azure Stream Analytics memungkinkan analitik real time pada data geospasial streaming. Hanya dengan beberapa baris kode, Anda dapat mengembangkan solusi tingkat produksi untuk skenario yang kompleks. Fungsi-fungsi ini mendukung semua jenis WKT dan GeoJSON Point, Polygon, dan LineString.

Contoh skenario yang dapat memperoleh manfaat dari fungsi geospasial meliputi:

  • Berbagi tumpangan
  • Manajemen armada
  • Pelacakan aset
  • Pembatasan geografis
  • Pelacakan telepon di seluruh stasiun sel

Bahasa Kueri Analisis Aliran memiliki tujuh fungsi geospasial bawaan: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS, dan ST_WITHIN.

CreateLineString

Fungsi ini CreateLineString menerima titik dan mengembalikan GeoJSON LineString, yang dapat diplot sebagai garis pada peta. Anda harus memiliki setidaknya dua poin untuk membuat LineString. Titik LineString akan terhubung secara berurutan.

Kueri berikut menggunakan CreateLineString untuk membuat LineString menggunakan tiga poin. Poin pertama dibuat dari data input streaming, sementara dua lainnya dibuat secara manual.

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

Contoh input

garis lintang garis bujur
3.0 -10.2
-87.33 20.2321

Contoh output

{"type" : "LineString", "coordinates" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}

{"type" : "LineString", "coordinates" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}

Untuk mempelajari lebih lanjut, kunjungi referensi CreateLineString .

CreatePoint

Fungsi ini CreatePoint menerima garis lintang dan bujur dan mengembalikan titik GeoJSON, yang dapat diplot pada peta. Garis lintang dan bujur Anda harus berupa jenis data float .

Contoh kueri berikut menggunakan CreatePoint untuk membuat titik menggunakan garis lintang dan bujur dari data input streaming.

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

Contoh input

garis lintang garis bujur
3.0 -10.2
-87.33 20.2321

Contoh output

{"type" : "Point", "coordinates" : [-10.2, 3.0]}

{"type" : "Point", "coordinates" : [20.2321, -87.33]}

Untuk mempelajari selengkapnya, kunjungi referensi CreatePoint .

CreatePolygon

Fungsi menerima CreatePolygon poin dan mengembalikan rekaman poligon GeoJSON. Urutan titik harus mengikuti orientasi cincin kanan, atau berlawanan arah jaring jam. Bayangkan berjalan dari satu titik ke titik lain sesuai urutan penetapan mereka. Pusat poligon akan berada di sebelah kiri Anda setiap saat.

Contoh kueri berikut menggunakan CreatePolygon untuk membuat poligon dari tiga titik. Dua titik pertama dibuat secara manual, dan titik terakhir dibuat dari data input.

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

Contoh input

garis lintang garis bujur
3.0 -10.2
-87.33 20.2321

Contoh output

{"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] ]]}

Untuk mempelajari lebih lanjut, kunjungi referensi CreatePolygon .

ST_DISTANCE

Fungsi ST_DISTANCE ini mengembalikan jarak antara dua geometri dalam meter.

Kueri berikut menggunakan ST_DISTANCE untuk menghasilkan kejadian ketika pom bensin kurang dari 10 km dari mobil.

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

Untuk mempelajari lebih lanjut, kunjungi referensi ST_DISTANCE .

ST_OVERLAPS

Fungsi ini ST_OVERLAPS membandingkan dua geometri. Jika geometri tumpang tindih, fungsi mengembalikan 1. Fungsi mengembalikan 0 jika geometri tidak tumpang tindih.

Kueri berikut menggunakan ST_OVERLAPS untuk menghasilkan peristiwa saat bangunan berada dalam zona banjir yang mungkin terjadi.

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

Contoh kueri di bawah ini menghasilkan peristiwa ketika sebuah badai menuju ke arah mobil.

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

Untuk mempelajari lebih lanjut, kunjungi referensi ST_OVERLAPS .

ST_INTERSECTS

Fungsi ini ST_INTERSECTS membandingkan dua geometri. Jika geometri bersinggungan, maka fungsi mengembalikan 1. Fungsi mengembalikan 0 jika geometri tidak saling bersinggungan.

Contoh kueri berikut menggunakan ST_INTERSECTS untuk menentukan apakah jalan beraspal berpotingan dengan jalan tanah.

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

Contoh input

area pusat data stormArea
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "coordinates": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]}
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "coordinates": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]}

Contoh output

1

0

Untuk mempelajari lebih lanjut, kunjungi referensi ST_INTERSECTS .

ST_WITHIN

Fungsi ST_WITHIN menentukan apakah suatu geometri berada dalam geometri yang lain. Jika yang pertama terkandung dalam yang terakhir, fungsi akan mengembalikan 1. Fungsi akan mengembalikan 0 jika geometri pertama tidak terletak dalam yang terakhir.

Contoh kueri berikut menggunakan ST_WITHIN untuk menentukan apakah titik tujuan pengiriman berada dalam poligon gudang yang diberikan.

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

Contoh input

tujuanPengiriman warehouse
{"type":"Point", "coordinates": [76.6, 10.1]} {"type":"Polygon", "coordinates": [ [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] ]}

Contoh output

0

1

Untuk mempelajari lebih lanjut, kunjungi referensi ST_WITHIN .

Langkah berikutnya