Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Beralih layanan menggunakan menu tarik-turun Versi. Pelajari selengkapnya tentang navigasi.
Berlaku untuk: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Gunakan Bahasa Kueri Kusto (KQL) untuk membuat visualisasi geospasial. Pengklusteran geospasial mengatur data berdasarkan lokasi. KQL menyediakan beberapa metode pengklusteran geospasial dan alat visualisasi geospasial .
Dalam tutorial ini, Anda akan belajar cara:
- Titik plot pada peta
- Plot beberapa seri titik
- Menggunakan nilai GeoJSON untuk memplot titik pada peta
- Mewakili titik data dengan gelembung berukuran variabel
- Menampilkan titik dalam area tertentu
- Tampilkan titik terdekat pada LineString
- Tampilkan titik terdekat dalam poligon
- Menemukan anomali berdasarkan data geospasial
Prasyarat
Untuk menjalankan kueri, Anda memerlukan lingkungan kueri yang memiliki akses ke data sampel. Gunakan salah satu hal berikut ini:
- Akun Microsoft atau identitas pengguna Microsoft Entra untuk masuk ke kluster bantuan
- Akun Microsoft atau identitas pengguna Microsoft Entra untuk masuk ke kluster bantuan
- Ruang kerja Fabric dengan kapasitas yang diaktifkan oleh Microsoft Fabric
- Akun Microsoft atau identitas pengguna Microsoft Entra
- Ruang kerja Fabric dengan kapasitas yang diaktifkan oleh Microsoft Fabric
Gunakan proyek untuk memilih kolom bujur, lalu kolom lintang. Gunakan render untuk memperlihatkan titik pada peta (bagan sebar dengan kind diatur ke map).
Titik plot pada peta
Gunakan proyek untuk memilih kolom bujur, lalu kolom lintang. Gunakan render untuk memperlihatkan titik pada peta (bagan sebar dengan kind diatur ke map).
StormEvents
| take 100
| project BeginLon, BeginLat
| render scatterchart with (kind = map)
Plot beberapa seri titik
Untuk memvisualisasikan beberapa seri titik, gunakan proyek untuk memilih garis bujur, lintang, dan kolom ketiga yang menentukan seri.
Dalam kueri berikut, serinya adalah EventType. Titik menggunakan warna yang berbeda menurut EventType dan, saat dipilih, menampilkan nilai EventType.
StormEvents
| take 100
| project BeginLon, BeginLat, EventType
| render scatterchart with (kind = map)
Ketika hasilnya memiliki lebih banyak kolom daripada kolom bujur, lintang, dan seri, Anda juga dapat secara eksplisit menentukan xcolumn (bujur), ycolumn (lintang), dan series di render operator.
StormEvents
| take 100
| render scatterchart with (kind = map, xcolumn = BeginLon, ycolumns = BeginLat, series = EventType)
Menggunakan nilai GeoJSON untuk memplot titik pada peta
Nilai GeoJSON dinamis sering diperbarui dan digunakan dalam pemetaan real-time. Titik pemetaan dengan nilai GeoJSON dinamis memberi Anda fleksibilitas dan kontrol yang tidak dapat disediakan oleh garis lintang dan bujur biasa.
Kueri berikut menggunakan fungsi geo_point_to_s2cell dan geo_s2cell_to_central_point untuk memetakan peristiwa badai pada bagan sebar.
StormEvents
| project BeginLon, BeginLat
| summarize by hash=geo_point_to_s2cell(BeginLon, BeginLat, 5)
| project point = geo_s2cell_to_central_point(hash)
| project lng = toreal(point.coordinates[0]), lat = toreal(point.coordinates[1])
| render scatterchart with (kind = map)
Mewakili titik data dengan gelembung berukuran variabel
Visualisasikan distribusi data dengan menggabungkan setiap kluster dan merencanakan titik pusatnya.
Misalnya, kueri berikut memfilter peristiwa badai di mana EventType adalah Tornado. Ini mengelompokkan peristiwa ke dalam kluster garis bujur dan lintang, menghitung peristiwa di setiap kluster, memproyeksikan setiap titik pusat kluster, dan merender peta. Wilayah dengan tornado paling menonjol karena ukuran gelembungnya yang lebih besar.
StormEvents
| where EventType == "Tornado"
| project BeginLon, BeginLat
| where isnotnull(BeginLat) and isnotnull(BeginLon)
| summarize count_summary=count() by hash = geo_point_to_s2cell(BeginLon, BeginLat, 4)
| project geo_s2cell_to_central_point(hash), count_summary
| extend Events = "count"
| render piechart with (kind = map)
Menampilkan titik dalam area tertentu
Gunakan poligon untuk menentukan wilayah dan fungsi geo_point_in_polygon untuk memfilter peristiwa yang terjadi dalam wilayah tersebut.
Kueri berikut mendefinisikan poligon yang mewakili wilayah California selatan dan filter untuk peristiwa badai dalam wilayah ini. Kemudian mengelompokkan peristiwa ke dalam kluster, menghitung jumlah peristiwa di setiap kluster, memproyeksikan titik pusat kluster, dan merender peta untuk memvisualisasikan kluster.
let southern_california = dynamic({
"type": "Polygon",
"coordinates": [[[-119.5, 34.5], [-115.5, 34.5], [-115.5, 32.5], [-119.5, 32.5], [-119.5, 34.5]]
]});
StormEvents
| where geo_point_in_polygon(BeginLon, BeginLat, southern_california)
| project BeginLon, BeginLat
| summarize count_summary = count() by hash = geo_point_to_s2cell(BeginLon, BeginLat, 8)
| project geo_s2cell_to_central_point(hash), count_summary
| extend Events = "count"
| render piechart with (kind = map)
Tampilkan titik terdekat pada LineString
Kueri berikut menemukan peristiwa badai terdekat yang terjadi di sepanjang LineString tertentu, yang mewakili jalur yang ditentukan. Dalam hal ini, LineString adalah jalan ke Key West. Fungsi geo_distance_point_to_line() digunakan untuk memfilter peristiwa badai berdasarkan kedekatannya dengan LineString yang ditentukan. Jika peristiwa berada dalam jarak 500 meter dari LineString, peristiwa akan dirender di peta.
let roadToKeyWest = dynamic({
"type":"linestring",
"coordinates":[
[
-81.79595947265625,
24.56461038017685
],
[
-81.595458984375,
24.627044746156027
],
[
-81.52130126953125,
24.666986385216273
],
[
-81.35650634765625,
24.66449040712424
],
[
-81.32354736328125,
24.647017162630366
],
[
-80.8099365234375,
24.821639356846607
],
[
-80.62042236328125,
24.93127614538456
],
[
-80.37872314453125,
25.175116531621764
],
[
-80.42266845703124,
25.19251511519153
],
[
-80.4803466796875,
25.46063471847754
]
]});
StormEvents
| where isnotempty(BeginLat) and isnotempty(BeginLon)
| project BeginLon, BeginLat, EventType
| where geo_distance_point_to_line(BeginLon, BeginLat, roadToKeyWest) < 500
| render scatterchart with (kind=map)
Tampilkan titik terdekat dalam poligon
Kueri berikut menemukan peristiwa badai terdekat yang terjadi dalam poligon tertentu. Dalam hal ini, poligon adalah jalan ke Key West. Fungsi geo_distance_point_to_polygon() digunakan untuk memfilter peristiwa badai berdasarkan kedekatannya dengan poligon yang ditentukan. Jika peristiwa berada dalam jarak 500 meter dari poligon, peristiwa akan dirender di peta.
let roadToKeyWest = dynamic({
"type":"polygon",
"coordinates":[
[
[
-80.08209228515625,
25.39117928167583
],
[
-80.4913330078125,
25.517657429994035
],
[
-80.57922363281249,
25.477992320574817
],
[
-82.188720703125,
24.632038149596895
],
[
-82.1942138671875,
24.53712939907993
],
[
-82.13104248046875,
24.412140070651528
],
[
-81.81243896484375,
24.43714786161562
],
[
-80.58746337890625,
24.794214972389486
],
[
-80.08209228515625,
25.39117928167583
]
]
]});
StormEvents
| where isnotempty(BeginLat) and isnotempty(BeginLon)
| project BeginLon, BeginLat, EventType
| where geo_distance_point_to_polygon(BeginLon, BeginLat, roadToKeyWest) < 500
| render scatterchart with (kind=map)
Menemukan anomali berdasarkan data geospasial
Kueri berikut melakukan analisis peristiwa badai yang terjadi dalam keadaan tertentu. Kueri menggunakan sel S2 dan agregasi temporal untuk menyelidiki pola kerusakan. Hasilnya adalah bagan anomali visual yang menggambarkan penyimpangan atau penyimpangan dalam penghancuran yang diinduksi badai dari waktu ke waktu, menawarkan perspektif terperinci tentang efek badai dalam batas status yang ditentukan.
let stateOfInterest = "Texas";
let statePolygon = materialize(
US_States
| extend name = tostring(features.properties.NAME)
| where name == stateOfInterest
| project geometry=features.geometry);
let stateCoveringS2cells = statePolygon
| project s2Cells = geo_polygon_to_s2cells(geometry, 9);
StormEvents
| extend s2Cell = geo_point_to_s2cell(BeginLon, BeginLat, 9)
| where s2Cell in (stateCoveringS2cells)
| where geo_point_in_polygon(BeginLon, BeginLat, toscalar(statePolygon))
| make-series damage = avg(DamageProperty + DamageCrops) default = double(0.0) on StartTime step 7d
| extend anomalies=series_decompose_anomalies(damage)
| render anomalychart with (anomalycolumns=anomalies)
Konten terkait
- Lihat kasus penggunaan untuk pengklusteran geospasial: Analitik data untuk armada pengujian otomotif
- Pelajari tentang arsitektur Azure untuk pemrosesan dan analitik data geospasial
- Dapatkan pemahaman komprehensif tentang Azure Data Explorer dengan membaca laporan resmi