Öğretici: Jeo-uzamsal görselleştirmeler oluşturma
Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure Veri Gezgini✅ Azure İzleyici✅Microsoft Sentinel
Bu öğretici, jeo-uzamsal görselleştirme için Kusto Sorgu Dili (KQL) kullanmak isteyenlere yöneliktir. Jeo-uzamsal kümeleme, verileri coğrafi konuma göre düzenlemenin ve analiz etmenin bir yoludur. KQL, jeo-uzamsal kümeleme gerçekleştirmek için birden çok yöntem ve jeo-uzamsal görselleştirmeler için araçlar sunar.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Harita üzerinde noktaları çizme
- Birden çok nokta serisi çizme
- Harita üzerindeki noktaları çizmek için GeoJSON değerlerini kullanma
- Veri noktalarını değişken boyutlu kabarcıklarla temsil eder
- Belirli bir alandaki noktaları görüntüleme
- LineString'de yakındaki noktaları gösterme
- Yakın noktaları çokgende gösterme
- Jeo-uzamsal verilere dayalı anomalileri bulma
Önkoşullar
Aşağıdaki sorguları çalıştırmak için örnek verilere erişimi olan bir sorgu ortamına ihtiyacınız vardır. Aşağıdakilerden birini kullanabilirsiniz:
- Microsoft hesabı veya Microsoft Entra kullanıcı kimliği
- Microsoft Fabric özellikli kapasiteye sahip doku çalışma alanı
Harita üzerinde noktaları çizme
Haritadaki noktaları görselleştirmek için project kullanarak boylamı içeren sütunu ve ardından enlemi içeren sütunu seçin. Ardından, sonuçlarınızı olarak ayarlanmış bir dağılım grafiğinde kind
görmek için map
render kullanın.
StormEvents
| take 100
| project BeginLon, BeginLat
| render scatterchart with (kind = map)
Birden çok nokta serisi çizme
Birden çok nokta serisini görselleştirmek için project kullanarak boylamı ve enlemi ve seriyi tanımlayan üçüncü bir sütunu seçin.
Aşağıdaki sorguda, seri şeklindedir EventType
. Noktalar kendilerine EventType
göre farklı renklendirilir ve seçildiğinde sütunun EventType
içeriği görüntülenir.
StormEvents
| take 100
| project BeginLon, BeginLat, EventType
| render scatterchart with (kind = map)
Ayrıca ( Boylam), ycolumn
(Enlem) ve series
gerçekleştirirken render
açıkça belirtebilirsiniz xcolumn
. Sonuçta yalnızca boylam, enlem ve seri sütunlarından daha fazla sütun olduğunda bu belirtim gereklidir.
StormEvents
| take 100
| render scatterchart with (kind = map, xcolumn = BeginLon, ycolumns = BeginLat, series = EventType)
Harita üzerindeki noktaları çizmek için GeoJSON değerlerini kullanma
Dinamik GeoJSON değeri değiştirilebilir veya güncelleştirilebilir ve genellikle gerçek zamanlı eşleme uygulamaları için kullanılır. Dinamik GeoJSON değerlerini kullanan eşleme noktaları, düz enlem ve boylam değerleriyle mümkün olmayabilecek verilerin haritadaki gösterimi üzerinde daha fazla esneklik ve denetim sağlar.
Aşağıdaki sorgu, bir dağılım grafiğindeki fırtına olaylarını eşlemek için geo_point_to_s2cell ve geo_s2cell_to_central_point kullanır.
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)
Veri noktalarını değişken boyutlu kabarcıklarla temsil eder
Her kümede bir toplama gerçekleştirip kümenin merkezi noktasını çizerek veri noktalarının dağılımını görselleştirin.
Örneğin, aşağıdaki sorgu "Tornado" olay türünün tüm fırtına olayları için filtrelenir. Ardından olayları boylamlarına ve enlemlerine göre kümeler halinde gruplandırıyor, her kümedeki olay sayısını sayıyor ve kümenin merkezi noktasını projelendirir ve sonucu görselleştirmek için bir harita oluşturur. En çok kasırgaya sahip bölgeler, büyük kabarcık boyutlarına göre net bir şekilde algılandı.
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)
Belirli bir alandaki noktaları görüntüleme
Bölgeyi tanımlamak için çokgen ve bu bölgede gerçekleşen olayları filtrelemek için geo_point_in_polygon işlevini kullanın.
Aşağıdaki sorgu, güney California bölgesini temsil eden bir çokgen tanımlar ve bu bölgedeki fırtına olayları için filtreler. Ardından olayları kümeler halinde gruplandırıyor, her kümedeki olay sayısını sayıyor, kümenin merkezi noktasını projelendirir ve kümeleri görselleştirmek için bir harita oluşturur.
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)
LineString'de yakındaki noktaları gösterme
Aşağıdaki sorgu, tanımlı bir yolu temsil eden belirtilen LineString boyunca gerçekleşen yakındaki fırtına olaylarını bulur. Bu durumda LineString, Key West'e giden bir yoldur. geo_distance_point_to_line() işlevi, tanımlanan LineString'e yakınlıklarına göre fırtına olaylarını filtrelemek için kullanılır. Bir olay LineString'e 500 metre mesafedeyse, olay bir haritada işlenir.
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)
Yakın noktaları çokgende gösterme
Aşağıdaki sorgu, belirtilen çokgen içinde gerçekleşen yakındaki fırtına olaylarını bulur. Bu durumda, çokgen Key West'e giden bir yoldur. geo_distance_point_to_polygon() işlevi, tanımlanan çokgene yakınlıklarına göre fırtına olaylarını filtrelemek için kullanılır. Bir olay çokgenden 500 metre mesafedeyse, olay bir haritada işlenir.
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)
Jeo-uzamsal verilere dayalı anomalileri bulma
Aşağıdaki sorgu, belirli bir durumda gerçekleşen fırtına olaylarının analizini gerçekleştirir. Sorgu, hasar desenlerini araştırmak için S2 hücrelerini ve zamansal toplamayı kullanır. Sonuç, zaman içinde fırtına kaynaklı tahribattaki tüm düzensizlikleri veya sapmaları gösteren ve belirtilen durum sınırları içindeki fırtınaların etkisi hakkında ayrıntılı bir bakış açısı sunan görsel bir anomali grafiğidir.
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)
İlgili içerik
- Jeo-uzamsal kümeleme için kullanım örneğine bakın: Otomotiv test filoları için veri analizi
- Jeo-uzamsal veri işleme ve analiz için Azure mimarisi hakkında bilgi edinin
- Teknik incelemeyi okuyarak Azure Veri Gezgini hakkında kapsamlı bilgi edinin