Kurz: Vytváření geoprostorových vizualizací
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Tento kurz je určený pro ty, kteří chtějí použít dotazovací jazyk Kusto (KQL) pro geoprostorovou vizualizaci. Geoprostorové shlukování je způsob, jak uspořádat a analyzovat data na základě zeměpisného umístění. KQL nabízí několik metod pro provádění geoprostorových clusteringů a nástrojů pro geoprostorové vizualizace.
V tomto kurzu se naučíte:
- Vykreslení bodů na mapě
- Vykreslení více řad bodů
- Použití hodnot GeoJSON k vykreslení bodů na mapě
- Znázornění datových bodů s bublinami s proměnlivou velikostí
- Zobrazení bodů v určité oblasti
- Zobrazení blízkých bodů na linestringu
- Zobrazení blízkých bodů v mnohoúhelníku
- Vyhledání anomálií na základě geoprostorových dat
Požadavky
Pokud chcete spustit následující dotazy, potřebujete prostředí dotazu s přístupem k ukázkovým datům. Můžete použít jednu z těchto možností:
- Účet Microsoft nebo identita uživatele Microsoft Entra
- Pracovní prostor Fabric s kapacitou s povolenou kapacitou Microsoft Fabric
Vykreslení bodů na mapě
Pokud chcete vizualizovat body na mapě, vyberte pomocí projektu sloupec obsahující zeměpisnou délku a potom sloupec obsahující zeměpisnou šířku. Potom pomocí vykreslení zobrazte výsledky v bodovém grafu s nastaveným kind
na map
.
StormEvents
| take 100
| project BeginLon, BeginLat
| render scatterchart with (kind = map)
Vykreslení více řad bodů
Pokud chcete vizualizovat více řad bodů, pomocí projektu vyberte zeměpisnou délku a zeměpisnou šířku spolu s třetím sloupcem, který definuje řadu.
V následujícím dotazu je EventType
řada . Body se barevně liší podle jejich EventType
a při výběru se zobrazí obsah EventType
sloupce.
StormEvents
| take 100
| project BeginLon, BeginLat, EventType
| render scatterchart with (kind = map)
Můžete také explicitně zadat xcolumn
(Zeměpisná délka), ycolumn
(Zeměpisná šířka) a series
při provádění render
. Tato specifikace je nezbytná v případě, že výsledek obsahuje více sloupců než jen sloupce zeměpisné délky, zeměpisné šířky a řady.
StormEvents
| take 100
| render scatterchart with (kind = map, xcolumn = BeginLon, ycolumns = BeginLat, series = EventType)
Použití hodnot GeoJSON k vykreslení bodů na mapě
Dynamická hodnota GeoJSON se může změnit nebo aktualizovat a často se používá pro aplikace mapování v reálném čase. Mapování bodů pomocí dynamických hodnot GeoJSON umožňuje větší flexibilitu a kontrolu nad reprezentací dat na mapě, které nemusí být možné s hodnotami prosté zeměpisné šířky a délky.
Následující dotaz používá geo_point_to_s2cell a geo_s2cell_to_central_point k mapování událostí bouře v bodovém grafu.
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)
Znázornění datových bodů s bublinami s proměnlivou velikostí
Vizualizujte distribuci datových bodů provedením agregace v každém clusteru a následným vykreslením centrálního bodu clusteru.
Například následující dotaz filtruje všechny události storm typu "Tornado". Potom seskupí události do clusterů podle jejich délky a zeměpisné šířky, spočítá počet událostí v každém clusteru a vykreslí centrální bod clusteru a vykreslí mapu pro vizualizaci výsledku. Oblasti s největším tornádem se jasně rozpoznají na základě jejich velké velikosti bublin.
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)
Zobrazení bodů v určité oblasti
Pomocí mnohoúhelníku definujte oblast a funkci geo_point_in_polygon k filtrování událostí, ke kterým dochází v dané oblasti.
Následující dotaz definuje mnohoúhelník představující oblast jižní Kalifornie a filtry pro události bouře v této oblasti. Potom seskupí události do clusterů, spočítá počet událostí v každém clusteru, projektuje centrální bod clusteru a vykreslí mapu pro vizualizaci clusterů.
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)
Zobrazení blízkých bodů na linestringu
Následující dotaz vyhledá okolní události stormu, ke kterým dochází podél zadaného řetězce LineString, který představuje definovanou cestu. V tomto případě je LineString cesta k Key West. Funkce geo_distance_point_to_line() slouží k filtrování událostí stormu na základě jejich blízkosti definovaného linestringu. Pokud je událost v dosahu 500 metrů od linestringu, událost se vykreslí na mapě.
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)
Zobrazení blízkých bodů v mnohoúhelníku
Následující dotaz najde okolní události stormu, ke kterým dochází v zadaném mnohoúhelníku. V tomto případě je mnohoúhelník silnicí na Key West. Funkce geo_distance_point_to_polygon() slouží k filtrování událostí stormu na základě jejich blízkosti definovaného mnohoúhelníku. Pokud je událost v rozsahu 500 metrů od mnohoúhelníku, událost se vykreslí na mapě.
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)
Vyhledání anomálií na základě geoprostorových dat
Následující dotaz provede analýzu událostí stormu, ke kterým dochází v určitém stavu. Dotaz používá buňky S2 a časovou agregaci ke zkoumání vzorů poškození. Výsledkem je vizuální graf anomálií, který znázorňuje případné nesrovnalosti nebo odchylky zničení vyvolané bouřemi v průběhu času a nabízí podrobný pohled na účinek bouře v rámci zadaných hranic státu.
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)
Související obsah
- Podívejte se na případ použití geoprostorového clusteringu: Analýza dat pro testovací flotily automobilů
- Informace o architektuře Azure pro geoprostorové zpracování a analýzu dat
- Získání komplexního porozumění Azure Data Exploreru čtením dokumentu white paper