Megosztás a következőn keresztül:


Oktatóanyag: Térinformatikai vizualizációk létrehozása

Ez az oktatóanyag azoknak szól, akik a térinformatikai vizualizációhoz Kusto lekérdezésnyelv (KQL) szeretnének használni. A térinformatikai csoportosítással földrajzi hely alapján rendszerezheti és elemezheti az adatokat. A KQL több módszert kínál a térinformatikai fürtözés és a térinformatikai vizualizációk eszközeinek végrehajtásához.

Ebből az oktatóanyagból az alábbiakat sajátíthatja el:

Pontok ábrázolása térképen

A térkép pontjainak megjelenítéséhez a project használatával jelölje ki a hosszúságot tartalmazó oszlopot, majd a szélességet tartalmazó oszlopot. Ezután a rendereléssel megtekintheti az eredményeket egy pontdiagramon, amelynek kind értéke .map

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

Képernyőkép egy térképen látható viharesemények mintájáról.

Több pontsor ábrázolása

Több pontsor megjelenítéséhez a Project használatával válassza ki a hosszúsági és szélességi értéket egy harmadik oszloppal együtt, amely meghatározza az adatsort.

A következő lekérdezésben az adatsor a következő EventType: . A pontok a szerint eltérő színűek EventType, és ha ki vannak jelölve, az EventType oszlop tartalmát jelenítik meg.

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

Képernyőkép egy térképen lévő viharesemény-mintaeseményről típus szerint.

Explicit módon megadhatja a xcolumn (Hosszúság), a (Szélesség) ycolumn és series a értéket a rendervégrehajtásakor is. Erre a specifikációra akkor van szükség, ha az eredményben több oszlop szerepel, mint a hosszúsági, szélességi és adatsoroszlopok.

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

Pontok ábrázolása térképen GeoJSON-értékek használatával

A dinamikus GeoJSON-értékek módosíthatók vagy frissíthetők, és gyakran használják valós idejű leképezési alkalmazásokhoz. A dinamikus GeoJSON-értékeket használó leképezési pontok nagyobb rugalmasságot és szabályozást biztosítanak a térképen lévő adatok ábrázolása felett, amelyek egyszerű szélességi és hosszúsági értékekkel nem feltétlenül lehetségesek.

Az alábbi lekérdezés a geo_point_to_s2cell és a geo_s2cell_to_central_point használatával térképesen ábrázolja a vihareseményeket egy pontdiagramon.

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)

Képernyőkép a geojson használatával megjelenített viharesemény-mintaeseményről.

Adatpontok ábrázolása változó méretű buborékokkal

Az adatpontok eloszlásának vizualizációja az egyes fürtök összesítésének végrehajtásával, majd a fürt központi pontjának ábrázolásával.

Az alábbi lekérdezés például a "Tornádó" eseménytípus összes vihareseményére szűr. Ezután csoportosítja az eseményeket fürtökbe azok hosszúsága és szélessége alapján, megszámolja az egyes fürtök eseményeinek számát, és a fürt központi pontját jeleníti meg, és megjelenít egy térképet az eredmény megjelenítéséhez. A legtöbb tornádóval rendelkező régiók egyértelműen észlelhetők a nagy buborékméretük alapján.

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)

Képernyőkép az Azure Data Explorer webes felhasználói felületéről, amelyen a tornádóviharok térinformatikai térképe látható.

Pontok megjelenítése egy adott területen belül

A régió és a geo_point_in_polygon függvény definiálásához használjon sokszöget az adott régióban előforduló események szűréséhez.

Az alábbi lekérdezés a dél-kaliforniai régiót képviselő sokszöget definiálja, és szűri a régión belüli vihareseményeket. Ezután fürtökbe csoportosítja az eseményeket, megszámolja az egyes fürtök eseményeinek számát, a fürt központi pontját projekteli, és megjelenít egy térképet a fürtök megjelenítéséhez.

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)

Képernyőkép az Azure Data Explorer webes felhasználói felületéről, amelyen a dél-kaliforniai viharok térinformatikai térképe látható.

Közeli pontok megjelenítése LineStringen

Az alábbi lekérdezés megkeresi a közeli vihareseményeket, amelyek egy megadott LineString mentén történnek, amely egy meghatározott útvonalat jelöl. Ebben az esetben a LineString a Key West felé vezető út. A geo_distance_point_to_line() függvénnyel szűrhetőek a viharesemények a megadott LineStringhez való közelségük alapján. Ha egy esemény a LineStringtől 500 méterre található, az esemény térképen jelenik meg.

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)

Képernyőkép az előző KQL-lekérdezés eredményéről az események LineString mentén történő kiszámításához.

Közeli pontok megjelenítése sokszögben

A következő lekérdezés megkeresi a közeli vihareseményeket, amelyek egy adott sokszögben történnek. Ebben az esetben a sokszög a Key West felé vezető út. A geo_distance_point_to_polygon() függvény a viharesemények szűrésére szolgál a definiált sokszöghez való közelségük alapján. Ha egy esemény a sokszög 500 méterén belül van, az esemény térképen jelenik meg.

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)

Képernyőkép az előző KQL-lekérdezés eredményéről az események sokszög mentén történő kiszámításához.

Anomáliák keresése térinformatikai adatok alapján

Az alábbi lekérdezés egy adott állapoton belüli viharesemények elemzését végzi el. A lekérdezés S2 cellákat és időbeli összesítést használ a kárminták vizsgálatához. Az eredmény egy vizuális anomáliadeforma, amely a vihar által okozott pusztítás esetleges rendellenességeit vagy eltéréseit ábrázolja az idő múlásával, és részletes képet nyújt a viharok adott államhatárokon belüli hatásáról.

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)

Képernyőkép az előző KQL-lekérdezés által renderelt anomáliadetekt diagramról.