Pengantar fungsi geospasial Analisis Aliran

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, serta LineString.

Contoh skenario yang dapat mengambil manfaat dari fungsi geospasial meliputi:

  • Berbagi tumpangan
  • Manajemen armada
  • Pelacakan aset
  • Pagar geografis
  • Pelacakan telepon di seluruh situs seluler

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

CreateLineString

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

Kueri berikut menggunakan CreateLineString untuk membuat LineString dengan tiga titik. 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 selengkapnya, kunjungi referensi CreateLineString.

CreatePoint

Fungsi CreatePoint menerima garis lintang dan bujur dan mengembalikan titik GeoJSON, yang dapat diplot pada peta. Garis lintang dan bujur Anda harus menjadi 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 CreatePolygon menerima titik dan mengembalikan rekaman poligon GeoJSON. Urutan titik harus mengikuti orientasi dering kanan, atau berlawanan arah jarum jam. Bayangkan berjalan dari satu titik ke titik lain dalam urutan mereka dinyatakan. Pusat poligon akan ke sebelah kiri Anda sepanjang waktu.

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 selengkapnya, kunjungi referensi CreatePolygon.

ST_DISTANCE

Fungsi ST_DISTANCE mengembalikan jarak antara dua geometri dalam meter.

Kueri berikut menggunakan ST_DISTANCE untuk menghasilkan peristiwa ketika pompa 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 selengkapnya, kunjungi referensi ST_DISTANCE.

ST_OVERLAPS

Fungsi 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 berikut menghasilkan kejadian ketika badai sedang menuju mobil.

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

Untuk mempelajari selengkapnya, kunjungi referensi ST_OVERLAPS.

ST_INTERSECTS

Fungsi ST_INTERSECTS membandingkan dua geometri. Jika geometri bersinggungan, maka fungsi mengembalikan 1. Fungsi mengembalikan 0 jika geometri tidak saling berpotongan satu sama lain.

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

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

Contoh input

datacenterArea badaiArea
{"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 selengkapnya, kunjungi referensi ST_INTERSECTS.

ST_WITHIN

Fungsi ST_WITHIN menentukan apakah geometri berada dalam geometri lain. Jika yang pertama terkandung dalam yang terakhir, fungsi akan mengembalikan 1. Fungsi ini 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

deliveryDestination gudang
{"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 selengkapnya, kunjungi referensi ST_WITHIN.

Langkah berikutnya