Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wechseln Sie Dienste mit der Dropdownliste "Version". Weitere Informationen zur Navigation.
Gilt für: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Verwenden Sie die Kusto Query Language (KQL), um geospatiale Visualisierungen zu erstellen. Geospatialclustering organisiert Daten nach Standort. KQL bietet mehrere Geospatialclustering-Methoden und Geospatialvisualisierungstools .
In diesem Tutorial erfahren Sie, wie:
- Zeichnen von Punkten auf einer Karte
- Zeichnen mehrerer Punktreihen
- Verwenden von GeoJSON-Werten zum Zeichnen von Punkten auf einer Karte
- Darstellen von Datenpunkten mit blasenvariabler Größe
- Anzeigen von Punkten innerhalb eines bestimmten Bereichs
- Anzeigen von in der Nähe befindlichen Punkten in einem LineString
- Anzeigen von in der Nähe befindlichen Punkten in einem Polygon
- Suchen von Anomalien basierend auf geospatialen Daten
Voraussetzungen
Zum Ausführen der Abfragen benötigen Sie eine Abfrageumgebung, die Zugriff auf die Beispieldaten hat. Verwenden Sie eine der folgenden Optionen:
- Microsoft-Konto oder Microsoft Entra-Benutzeridentität, um sich beim Hilfecluster anzumelden
- Microsoft-Konto oder Microsoft Entra-Benutzeridentität, um sich beim Hilfecluster anzumelden
- Fabric-Arbeitsbereich mit einer Microsoft Fabric-fähigen Kapazität
- Ein Microsoft-Konto oder eine Microsoft Entra-Benutzeridentität
- Fabric-Arbeitsbereich mit einer Microsoft Fabric-fähigen Kapazität
Verwenden Sie das Projekt , um die Längengradspalte und dann die Breitengradspalte auszuwählen. Verwenden Sie Render, um Punkte auf einer Karte anzuzeigen (Streudiagramm mit kind auf map gesetzt).
Zeichnen von Punkten auf einer Karte
Verwenden Sie das Projekt , um die Längengradspalte und dann die Breitengradspalte auszuwählen. Verwenden Sie Render, um Punkte auf einer Karte anzuzeigen (Streudiagramm mit kind auf map gesetzt).
StormEvents
| take 100
| project BeginLon, BeginLat
| render scatterchart with (kind = map)
Zeichnen mehrerer Punktreihen
Um mehrere Punktreihen zu visualisieren, verwenden Sie das Projekt , um längengrad, breitengrad und eine dritte Spalte auszuwählen, die die Datenreihe definiert.
In der folgenden Abfrage ist EventTypedie Datenreihe . Die Punkte verwenden je nach EventType unterschiedliche Farben und zeigen bei Auswahl den Wert von EventType an.
StormEvents
| take 100
| project BeginLon, BeginLat, EventType
| render scatterchart with (kind = map)
Wenn das Ergebnis mehr Spalten als Längengrad, Breitengrad und Reihenspalten aufweist, können Sie auch explizit die xcolumn Spalten (Längengrad), ycolumn (Breitengrad) und series im render Operator angeben.
StormEvents
| take 100
| render scatterchart with (kind = map, xcolumn = BeginLon, ycolumns = BeginLat, series = EventType)
Verwenden von GeoJSON-Werten zum Zeichnen von Punkten auf einer Karte
Dynamische GeoJSON-Werte werden häufig aktualisiert und in Echtzeitzuordnung verwendet. Das Abbilden von Punkten mit dynamischen GeoJSON-Werten gibt Ihnen eine Flexibilität und Kontrolle, die einfache Breiten- und Längengrade nicht bieten können.
Die folgende Abfrage verwendet die Funktionen geo_point_to_s2cell und geo_s2cell_to_central_point , um Sturmereignisse in einem Punktdiagramm zuzuordnen.
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)
Darstellung von Datenpunkten mit Blasen variabler Größe
Visualisieren Sie die Datenverteilung, indem Sie jeden Cluster aggregieren und seinen zentralen Punkt darstellen.
Die folgende Abfrage filtert z. B. Sturmereignisse, bei denen EventType ist Tornado. Es gruppiert Ereignisse in Längengrad- und Breitengruppen, zählt Ereignisse in jedem Cluster, projiziert den zentralen Punkt jedes Clusters und rendert eine Karte. Regionen mit den meisten Tornados heben sich durch ihre größere Blasengröße hervor.
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)
Anzeigen von Punkten innerhalb eines bestimmten Bereichs
Verwenden Sie ein Polygon, um den Bereich und die geo_point_in_polygon-Funktion zu definieren, um nach Ereignissen zu filtern, die innerhalb dieses Bereichs auftreten.
Die folgende Abfrage definiert ein Polygon, das die Region Südkalifornien darstellt, und filtert nach Sturmereignissen innerhalb dieser Region. Anschließend werden die Ereignisse in Cluster gruppiert, die Anzahl der Ereignisse in jedem Cluster gezählt, der zentrale Punkt des Clusters projiziert und eine Karte gerendert, um die Cluster zu visualisieren.
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)
Anzeigen von in der Nähe befindlichen Punkten in einem LineString
Die folgende Abfrage findet nahe gelegene Sturmereignisse, die entlang eines angegebenen LineString-Objekts auftreten, das einen definierten Pfad darstellt. In diesem Fall ist lineString eine Straße nach Key West. Die funktion geo_distance_point_to_line() wird verwendet, um die Sturmereignisse basierend auf ihrer Nähe zum definierten LineString zu filtern. Wenn ein Ereignis innerhalb von 500 Metern von LineString entfernt ist, wird das Ereignis auf einer Karte gerendert.
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)
Anzeigen von in der Nähe befindlichen Punkten in einem Polygon
Die folgende Abfrage findet In der Nähe befindliche Sturmereignisse, die innerhalb eines angegebenen Polygons auftreten. In diesem Fall ist das Polygon eine Straße nach Key West. Die funktion geo_distance_point_to_polygon() wird verwendet, um die Sturmereignisse basierend auf ihrer Nähe zum definierten Polygon zu filtern. Wenn ein Ereignis innerhalb von 500 Metern des Polygons liegt, wird das Ereignis auf einer Karte gerendert.
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)
Suchen von Anomalien basierend auf geospatialen Daten
Die folgende Abfrage führt eine Analyse von Sturmereignissen aus, die innerhalb eines bestimmten Zustands auftreten. Die Abfrage verwendet S2-Zellen und zeitliche Aggregation, um Schadensmuster zu untersuchen. Das Ergebnis ist ein visuelles Anomaliediagramm, das Unregelmäßigkeiten oder Abweichungen bei der sturminduzierten Zerstörung im Laufe der Zeit darstellt und eine detaillierte Perspektive auf die Wirkung von Stürmen innerhalb der angegebenen Zustandsgrenzen bietet.
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)
Zugehöriger Inhalt
- Siehe Anwendungsfall für geospatiale Clustering: Datenanalyse für Fahrzeugtestflotten
- Informationen zur Azure-Architektur für geospatiale Datenverarbeitung und -analyse
- Erhalten Sie ein umfassendes Verständnis des Azure-Daten-Explorers, indem Sie das Whitepaper lesen.