Öğretici: Jeo-uzamsal görselleştirmeler oluşturma

Sürüm açılan listesini kullanarak hizmetler arasında geçiş yapın. Gezinti hakkında daha fazla bilgi edinin.
Şunlar için geçerlidir: ✅ Microsoft Fabric ✅ Azure Veri Gezgini ✅ Azure İzleyici ✅ Microsoft Sentinel

Jeo-uzamsal görselleştirmeler oluşturmak için Kusto Sorgu Dili'ni (KQL) kullanın. Jeo-uzamsal kümeleme verileri konuma göre düzenler. KQL, birden çok jeo-uzamsal kümeleme yöntemi ve jeo-uzamsal görselleştirme araçları sağlar.

Bu eğitimde şunları öğreniyorsunuz:

Önkoşullar

Sorguları çalıştırmak için örnek verilere erişimi olan bir sorgu ortamına ihtiyacınız vardır. Aşağıdakilerden birini kullanın:

  • Yardım kümesinde oturum açmak için Microsoft hesabı veya Microsoft Entra kullanıcı kimliği
  • Yardım kümesinde oturum açmak için Microsoft hesabı veya Microsoft Entra kullanıcı kimliği

Boylam sütununu ve ardından enlem sütununu seçmek için project kullanın. Haritadaki noktaları göstermek için render kullanın (dağılım grafiği kind olarak map ayarlandığında).

Harita üzerinde noktaları çizme

Boylam sütununu ve ardından enlem sütununu seçmek için project kullanın. Haritadaki noktaları göstermek için render kullanın (dağılım grafiği kind olarak map ayarlandığında).

StormEvents
| take 100
| project BeginLon, BeginLat
| render scatterchart with (kind = map)

Haritadaki örnek fırtına olaylarının ekran görüntüsü.

Birden çok nokta serisi çizme

Birden çok nokta serisini görselleştirmek için project kullanarak boylam, enlem ve seriyi tanımlayan üçüncü sütunu seçin.

Aşağıdaki sorguda, seri şeklindedir EventType. Noktalar EventType ile farklı renkler kullanır ve seçildiğinde EventType değerini gösterir.

StormEvents
| take 100
| project BeginLon, BeginLat, EventType
| render scatterchart with (kind = map)

Türe göre haritadaki örnek fırtına olaylarının ekran görüntüsü.

Sonuçta boylam, enlem ve seri sütunlarından daha fazla sütun olduğunda, xcolumn (boylam), ycolumn (enlem) ve series belirtimlerini render işlemcisi içinde açıkça belirtebilirsiniz.

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ğerleri sık sık güncelleştirilir ve gerçek zamanlı eşlemede kullanılır. Dinamik GeoJSON değerlerine sahip noktaları eşlemek, düz enlem ve boylamların sağlayamayacağı esneklik ve kontrolü size sunar.

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 işlevlerini 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)

GeoJSON kullanılarak görüntülenen örnek fırtına olaylarının ekran görüntüsü.

Değişken boyutlu kabarcıklarla veri noktalarını temsil eder

Her kümeyi toplayarak ve merkezi noktasını çizerek veri dağıtımını görselleştirin.

Örneğin, aşağıdaki sorgu EventType Tornadoolduğu storm olaylarını filtreler. Olayları boylam ve enlem kümeleri halinde gruplandırıyor, her kümedeki olayları sayıyor, her kümenin merkezi noktasını projelendirir ve bir harita işler. En çok kasırgaya sahip bölgeler, daha büyük kabarcık boyutlarıyla dikkat çekiyor.

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)

Kasırga olaylarının jeo-uzamsal haritasını gösteren Azure Veri Gezgini'nin ekran görüntüsü.

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)

Güney California fırtınalarının jeo-uzamsal haritasını gösteren Azure Veri Gezgini web kullanıcı arabiriminin ekran görüntüsü.

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)

LineString boyunca olayları hesaplamak için önceki KQL sorgusunun sonucunun ekran görüntüsü.

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)

Çokgendeki olayları hesaplamak için önceki KQL sorgusunun sonucunun ekran görüntüsü.

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)

Önceki KQL sorgusu tarafından işlenen anomali grafiğinin ekran görüntüsü.