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.