Aracılığıyla paylaş


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

Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure Veri Gezgini Azure İzleyiciMicrosoft 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:

Ö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:

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 maprender kullanın.

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ı ve enlemi ve seriyi tanımlayan üçüncü bir sütunu seçin.

Aşağıdaki sorguda, seri şeklindedir EventType. Noktalar kendilerine EventTypegö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)

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

Ayrıca ( Boylam), ycolumn (Enlem) ve series gerçekleştirirken renderaçı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)

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

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)

Kasırga fırtınalarının jeo-uzamsal haritasını gösteren Azure Veri Gezgini web kullanıcı arabiriminin 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ü.