Features werden in der Regel in einer Karte basierend auf ihren Attributwerten symbolisiert. Einige Beispiele enthalten Städte, die durch die Bevölkerung oder Straßen, die durch Straßenklassifizierungen symbolisiert sind. In manchen Fällen müssen Features stattdessen durch berechnete, aggregierte Werte symbolisiert werden. Beispiele für berechnete Werte sind Minimum, Maximum, Durchschnitt oder Summe. Dies sind Werte, die aus den Attributen aggregierter Werte berechnet werden.
Szenarien mit Zeitdaten
Es gibt zwei Hauptszenarien, bei denen das Symbolisieren von Daten mit aggregierten Werten hilfreich ist.
Stationsdaten mit einer Zeitserie
Dies sind Daten sich ändernder Mengen, deren Position im Lauf der Zeit festgelegt ist. Features werden an diesen Positionen im Lauf der Zeit in regelmäßigen und unregelmäßigen Intervallen beobachtet, erfasst oder vorhergesagt. Beispiele hierfür sind Temperatur, Niederschlag, Wasserstand, Salzgehalt und Ablaufdaten, die an Wetterstationen oder Überwachungsstationen entlang von Flüssen gemessen werden.
Sie können die Features von Wetterstationen nach dem Gesamtniederschlag vom Juli oder nach höchster bzw. niedrigster jährlicher Temperatur symbolisieren. Um die Daten auf diese Weise zu visualisieren, modellieren Sie sie so, dass die festgelegten Positionen in einer Feature-Class und die Beobachtungsdaten in einer zugehörigen Tabelle mit Datums-/Uhrzeit-Attributierungen gespeichert werden.
Geringe Datenmengen mit Zeitstempeln
Dies sind Features, die Ereignisse darstellen, die zu einem einzelnen Zeitpunkt aufgetreten sind. Beispiele hierfür sind Tornadopositionen, Kundenadressen, in Krankenhäuser eingewiesene Patienten und Tatorte.
Sie können den durch Tornados verursachten Gesamtverlust, die Gesamtverkäufe oder die Gesamtzahl der Patienten anzeigen, die in Polygon-Features wie Provinzen, Bezirke oder andere Verwaltungsgrenzen zusammengefasst sind. Um die Daten auf diese Weise zu visualisieren, modellieren Sie sie so, dass die Positionen in einer Feature-Class mit Datum-/Uhrzeit-Attributierung gespeichert werden.
Vorbereiten der Daten für die aggregierte Anzeige
Um Features mit aggregierten Ergebnissen anzuzeigen, müssen Sie Folgendes berücksichtigen:
- Aggregationstyp: Legt fest, ob Summen, Minimum, Maximum, Durchschnittswerte oder eine andere Metrik angezeigt werden sollen.
- Features anzeigen: Bestimmt, welche Features die aggregierten Ergebnisse anzeigen. Diese können mit den Features mit gemessenen Beobachtungen identisch sein oder davon abweichen. Sie können beispielsweise den gesamten jährlichen Niederschlag an jeder Wetterstation oder den gesamten jährlichen Niederschlag (gemessen an einzelnen Punkt-Features von Wetterstationen) basierend auf Grenzen von Landkreisen oder Abflussgebieten darstellen.
- Abfrageparameter:
- Zeit: Bestimmt den Zeitraum und das Zeitintervall für die Anzeige aggregierter Ergebnisse. Verwenden Sie den Zeitschieberegler, um diese dynamisch festzulegen. Legen Sie beispielsweise für täglich aggregierte Ergebnisse sowohl der Zeitraum als auch das Zeitintervall des Schiebereglers auf einen Tag fest.
- Bereich: Sie können Ergebnisse für eine Teilmenge von Features aggregieren. Um beispielsweise die Messungen des Salzgehalts zwischen 0 und 50 Metern und zwischen 50 und 75 Metern zu aggregieren, verwenden Sie einen Bereichsparameter und den Bereichsschieberegler.
- Abfragefilter: Wenn Sie Muster in Kriminalitätsdaten durch Aggregieren des Straftattyp in jedem Stadtbezirk anzeigen möchten, verwenden Sie einen diskontinuierlichen Parameter, um einen Abfragefilter zu erstellen.
Beispiel für aggregierte Ergebnisse
Angenommen Sie verwenden eine Feature-Class namens weather_stations, in der die Positionen von Wetterstationen gespeichert sind. Jedes Stations-Feature wird durch den im Feld station_id gespeicherten Wert eindeutig identifiziert. Dieses Feld wird verwendet, um die Stationen zu verknüpfen, die sich auf die Beobachtungsdatensätze in einer Tabelle namens observed_rainfall beziehen. In dieser Tabelle sind Datensätze zu beobachteten Niederschlägen gespeichert, die im Lauf der Zeit an derselben Position erfasst wurden. Sie enthält das Feld station_id, das mit der Feature-Class mit Stationen verknüpft werden soll, das Feld rainfall_cm, in dem der tägliche Niederschlag in Zentimetern gespeichert wird, und das Feld collection_date, in dem das Datum der Niederschlagsereignisse gespeichert wird.
Dynamisches Berechnen aggregierter Ergebnisse mit Parametern für Abfrage-Layer
Ziel ist es, den gesamten Niederschlag für einen angegebenen Zeitraum (z. B. einen Monat, ein Jahr oder einen benutzerdefinierten Zeitraum) an jeder Station zu berechnen und die Stationen nach dem Gesamtniederschlag zu symbolisieren, der für diesen Zeitraum berechnet wurde. Es gibt zwei Möglichkeiten, dies zu erreichen.
Die erste Möglichkeit besteht darin, mit den folgenden einfachen oder erweiterten Methoden durch Definieren der Parameter für Abfrage-Layer die aggregierten Ergebnisse dynamisch zu berechnen. Bei der zweiten Möglichkeit werden unter Verwendung von Geoverarbeitungswerkzeugen oder Datenbankfunktionen die Ergebnisse vorab berechnet.
Ausführen des Geoverarbeitungswerkzeugs "Aggregations-Abfrage-Layer erstellen"
Sie können das Geoverarbeitungswerkzeug Aggregations-Abfrage-Layer erstellen verwenden, um einen Abfrage-Layer zu erstellen und Abfrageparameter für die Anzeige Ihrer Ergebnisse zu definieren. Dies ist die flexiblere Methode der beiden, mit der sichergestellt wird, dass die meisten aktuellen Ergebnisse immer dargestellt werden. Dieses Werkzeug verwendet die Aggregations- und Verbindungsfunktionen für SQL-Datenbanken, um Informationen zusammenzufassen, zu aggregieren und zu filtern.
Das Werkzeug Aggregations-Abfrage-Layer erstellen ermöglicht Ihnen das Aktivieren der Zeiteigenschaften für den Abfrage-Layer, um unterschiedliche Zeiträume dynamisch anzeigen zu können, anstatt ein Ergebnis für jeden gewünschten Zeitraum vordefinieren und berechnen zu müssen.
- Klicken Sie bei geöffneter Karte auf der Registerkarte Analyse in der Gruppe Geoverarbeitung auf Werkzeuge .
- Klicken Sie im Bereich Geoverarbeitung auf der Registerkarte Toolboxes auf Data Management Tools > Layer und Tabellensichten > Aggregations-Abfrage-Layer erstellen. Klicken Sie auf das Tool, um es zu öffnen.
- Legen Sie entsprechend dem Beispielszenario die Eigenschaften des Werkzeugs wie folgt fest:
- Legen Sie auf der Registerkarte Parameter den Parameter Ziel-Feature-Class auf die Feature-Class weather_stations fest.
- Legen Sie observed_rainfall als Parameter Summentabelle fest.
- Legen Sie das Ziel- und das zugehörige Join-Feld auf station_id fest, und geben Sie einen Namen des Ausgabe-Layers ein.
- Wählen Sie SUM als Aggregattyp für das Zusammenfassungsfeld aus. Wählen Sie unter Feldname(n) den Namen rainfall_cm aus.
- Wählen Sie unter Parameterdefinitionen den Typ Bereich als Parametertyp aus, und geben Sie einen Namen, zum Beispiel, timeWindow, an. Diese Einstellung aktiviert die Zeiteigenschaften für den Abfrage-Layer.
- Definieren Sie den Parameter Feld oder Ausdruck als Feld collection_date.
- Legen Sie den Parameter Datentyp auf Datum fest.
- Überprüfen Sie die anderen Parameter, und legen Sie sie nach Bedarf fest. Basierend auf den obigen Festlegungen werden einige davon automatisch festgelegt.
- Führen Sie das Werkzeug aus. Der zeitbezogene Abfrage-Layer wird der Karte und dem Bereich Inhalt hinzugefügt.
- Öffnet die Attributtabelle des Abfrage-Layers. Ein zusätzliches Feld mit den Namen SUM_rainfall_cm enthält den Gesamtniederschlag unter Verwendung aller Datensätze.
Sie können den Zeitschieberegler aktivieren und zu einem beliebigen Zeitraum navigieren. Beim Navigieren werden die Werte für den aktuellen Zeitraum der Karte neu berechnet. Zusätzlich können Sie auch Attribute verwenden, um Punkt-Features von Wetterstationen zu symbolisieren und zu beschriften. Weitere Informationen zu diesem Werkzeug finden Sie unter Aggregations-Abfrage-Layer erstellen.
Manuelles Erstellen eines Abfrage-Layers
In einigen Fällen müssen Sie den Abfrage-Layer manuell erstellen, wenn die Abfrage erweiterte Schlüsselwörter oder Parameter verwendet. Beispiele sind folgende Fragen:
- Vordefinierte diskontinuierliche Parameter, wie zum Beispiel view_scale und view_extent
- SQL-Abfragen mit mehr als einem Join oder einem Outer Join
Diese Methode hat Nachteile. Dazu zählen folgende:
- Es kann eine erhöhte Auslastung der Datenbank bedeuten, da die aggregierten Ergebnisse jedes Mal berechnet werden, wenn Sie durch die Karte navigieren, den Zeitschieberegler verwenden oder die Attributtabelle öffnen. Bei kleineren Datasets oder wenn bei großen Datasets das Zeitfenster relativ kleine Teilmengen zurückgibt, ist diese erhöhte Auslastung vernachlässigbar.
- Bei dieser Methode ist es erforderlich, dass die Daten in einer Enterprise-Geodatabase gespeichert sind. Diese Methode kann nicht mit File-Geodatabases oder Shapefiles verwendet werden.
Wenn Ihre Daten häufig aktualisiert werden, können Sie die Daten in eine Enterprise-Datenbank verschieben und die zusätzliche Auslastung der Datenbank akzeptieren. Stellen Sie sicher, dass die Empfehlungen für die Datenbankverwaltung, zum Beispiel beim Erstellen von Indizes, beachtet werden.
Führen Sie zum manuellen Erstellen eines Abfrage-Layers die folgenden Schritte aus:
- Klicken Sie auf der Registerkarte Karte in der Gruppe Layer im Menü Daten hinzufügen auf Abfrage-Layer .
- Erstellen Sie im Feld Abfrage eine SQL-Abfrage, um zum aggregierten Ergebnis zurückzukehren.
Wählen Sie den Gesamtniederschlag für jede Station aus der Tabelle observed_rainfall aus.
SELECT station_id, SUM(rainfall_cm) AS total_rainfall FROM observed_rainfall GROUP BY station_id
Verbinden Sie die Ergebnisse mit der Feature-Class weather_stations. Dabei wird der Gesamtniederschlag unter Verwendung aller Datensätze aus der Tabelle observed_rainfall zurückgegeben.
SELECT w.*, r.total_rainfall FROM weather_stations AS w INNER JOIN (SELECT station_id, SUM(rainfall_cm) AS total_rainfall FROM observed_rainfall GROUP BY station_id) AS r ON w.station_id = r. station_id
Legen Sie den Zeitraum in der WHERE-Klausel fest, um aggregierte Ergebnisse zwischen dem 1. Juni und 30. Juni 2016 zu berechnen.
SELECT w.*, r.total_rainfall FROM weather_stations AS w INNER JOIN (SELECT station_id, SUM(rainfall_cm) AS total_rainfall FROM observed_rainfall WHERE collection_date >= '6/1/2016' AND collection_date <= '6/30/2016' GROUP BY station_id) AS r ON w.station_id = r.station_id
- Klicken Sie auf Weiter, um die restlichen Anweisungen im Dialogfeld Neuer Abfrage-Layer abzuschließen und der aktuellen Karte den Abfrage-Layer hinzuzufügen.
- Symbolisieren Sie den Layer, um Wetterstationen mit dem Gesamtniederschlag an jeder Position für Juni 2016 darzustellen. Sie können die Größe von Features beispielsweise entsprechend dem Gesamtniederschlag festlegen, indem Sie abgestufte oder proportionale Symbole verwenden; Sie können stattdessen auch verschiedene Farben für die einzelnen Stationen nutzen, indem Sie abgestufte oder nicht klassifizierte Farbsymbole verwenden.
Um den Zeitraum zu ändern, um beispielsweise dieselbe Visualisierung anzuzeigen, jedoch stattdessen vom 1. bis 15. August, müssen Sie die Quelle des Abfrage-Layers öffnen und die WHERE-Klausel ändern. Um diese Änderung vorzunehmen, sollte besser der Zeitschieberegler verwendet werden. Um Änderungen der WHERE-Klausel mit dem Zeitschieberegler durchzuführen, müssen Sie Parameter in der SQL-Anweisung verwenden.
Führen Sie zum Ändern des Zeitraums die folgenden Schritte aus:
- Klicken Sie im Bereich Inhalt mit der rechten Maustaste auf den Layer, und klicken Sie auf Eigenschaften .
- Klicken Sie auf der Registerkarte Quelle in der Zeile Abfrage der Tabelle auf Abfrage bearbeiten . Die Abfrage wird im Textfeld Abfrage angezeigt.
Tipp:
Um den Abfragetext besser lesen zu können, können Sie ihn vergrößern, indem Sie die STRG-Taste drücken während Sie das Mausrad vorwärts drehen.
- Ersetzen Sie WHERE collection_date >= '6/1/2016' AND collection_date <= '6/30/2016' durch einen Bereichsparameter. Bereichsparameter werden mit dem Präfix ::r: deklariert.
Die WHERE-Klausel wird durch einen Bereichsparameter namens TimeVar ersetzt.
SELECT w.*, r.total_rainfall FROM weather_stations AS w INNER JOIN (SELECT station_id, SUM(rainfall_cm) AS total_rainfall FROM observed_rainfall WHERE ::r:TimeVar GROUP BY station_id) AS r ON w.station_id = r.station_id
- Parameter sind in der SQL-Abfrage fett formatiert, und neben ihnen befindet sich eine Schaltfläche "Bearbeiten" . Klicken Sie auf die Schaltfläche, um Eigenschaften des Parameters wie folgt festzulegen:
- Wählen Sie für Feld oder Ausdruck den Eintrag collection_date aus.
- Wählen Sie für Datentyp Datum aus.
- Aktivieren Sie die Option Standardwerte.
- Legen Sie den Standardwertebereich auf 6/1/2016 bis 6/30/2016 fest.
- Klicken Sie auf Fertig.
- Klicken Sie im Dialogfeld Abfrage bearbeiten auf Überprüfen, um sicherzustellen, dass keine Fehler vorhanden sind.
Der Layer verfügt nun über aktivierte Zeiteigenschaften, da der Bereichsparameter ein Datums-/Uhrzeitfeld referenziert. Layer mit aktivierten Zeiteigenschaften werden mit dem Zeitschieberegler gesteuert. Verwenden Sie beispielsweise den Zeitschieberegler, um einen Zeitraum auszuwählen, sodass die Wetterstationen mit dem dynamisch berechneten Gesamtniederschlag für diesen Zeitraum angezeigt werden.
- Legen Sie für die Gesamtzahlen pro Monat Aktuelle Zeitspanne und Schrittintervall auf einen Monat fest.
- Legen Sie für einen gleitenden Durchschnitt Aktuelle Zeitspanne auf einen Monat und Schrittintervall auf einen Tag fest. In diesem Fall bewegt sich der Zeitschieberegler jedes Mal, wenn Sie durch ein Intervall klicken, zum nächsten Tag und zeigt Ergebnisse für einen Monat ab diesem Tag an.
Tipp:
Aktivieren Sie in der Attributtabelle auf der Registerkarte Ansicht die Filter Zeit und Ausdehnung, um nur die Features anzuzeigen, die auf der Karte sichtbar sind. Andernfalls werden die Ergebnisse für alle Features und die gesamte Tabelle berechnet, was möglicherweise viel Zeit in Anspruch nimmt, wenn die Tabelle viele Datensätze enthält.
Vorausberechnen der Ergebnisse
Diese Methode ist ideal, wenn Sie mit Daten arbeiten, die selten aktualisiert werden, und ein vordefinierter Zeitraum akzeptabel ist. In diesem Fall berechnen Sie die aggregierten Ergebnisse im Voraus, damit die Auslastung der Datenbank bei jeder Aktualisierung der Karte, jedem Öffnen der Attributtabelle oder jedem Abfragen des Layers reduziert wird.
Diese Methode hat folgende Nachteile:
- Sie müssen diese Schritte bei jeder Aktualisierung der Zeitdaten ausführen.
- Sie ist nicht flexibel. Um Features mit wöchentlichen und jährlichen Ergebnissen zu visualisieren, benötigen Sie beispielsweise zwei getrennte Tabellen: eine zum Speichern aggregierter Ergebnisse für eine Woche und eine andere zum Speichern der jährlichen Ergebnisse.
- Bei dieser Methode kann der Zeitschieberegler nicht verwendet werden.
Es gibt zwei Möglichkeiten, aggregierte Ergebnisse vorauszuberechnen.
Verwenden von Geoverarbeitung
Anhand des folgenden Beispiels werden die Schritte zum Vorausberechnen des monatlichen durchschnittlichen Niederschlags für jede Wetterstation mithilfe von Geoverarbeitungswerkzeugen erläutert.
- Fügen Sie zur Darstellung des Monats ein neues ganzzahliges Feld in die Feature-Class namens month ein.
- Verwenden Sie das Werkzeug Feld berechnen, um Datensätze zu aktualisieren.
Setzen Sie den Parameter Ausdruck auf month = getMonth(!DateTime!).
Geben Sie Folgendes in den Parameter Codeblock ein. In diesem Beispiel ist v der Wert des Attributs datetime.
from datetime import datetime def getMonth(v): d = datetime.strptime(v, "%m/%d/%Y") return d.month
- Verwenden Sie das Werkzeug Summenstatistik, um eine Tabelle mit Zusammenfassungsergebnissen zu erstellen. In diesem Beispiel entspricht die Zusammenfassung dem monatlichen Gesamtniederschlag für jede Station. Geben Sie die Parameter wie folgt ein:
- Statistikfeld: Wählen Sie das Feld aus, das Sie zusammenfassen möchten. In diesem Beispiel ist es das Niederschlagsfeld.
- Statistiktyp: Wählen Sie SUMME aus, um den Gesamtniederschlag zu berechnen.
- Untersuchungsfeld: Wählen Sie die Felder station_id und month aus.
- Verwenden Sie das Werkzeug Feld verbinden oder Verbindung hinzufügen aus, um Datensätze aus der Summentabelle mit dem Feature-Layer zu verbinden.
- Zeigen Sie den Layer in der Karte mit einer Definitionsabfrage an, um Ergebnisse für einen bestimmten Monat anzuzeigen. Wenn Sie beispielsweise ausschließlich Ergebnisse des Monats Mai anzeigen möchten, verwenden Sie eine Definitionsabfrage, bei der Month = 5 ist.
Verwenden von Datenbankfunktionen
Wenn Ihre Daten in einer Enterprise-Datenbank gespeichert sind, können Sie eine SQL-Abfrage verwenden, um aggregierte oder Zusammenfassungsergebnisse in einer getrennten Tabelle zu speichern.
- Führen Sie die folgende SQL-Abfrage in einem Datenbank-Client aus. Sie berechnet den monatlichen Durchschnitt für jede Wetterstation. Die Abfrage setzt voraus, dass ein Feld vorhanden ist, in dem ganzzahlige Werte zur Darstellung eines Monats gespeichert werden.
SELECT station_id, month, SUM(rainfall_cm) AS total_rainfall INTO avg_monthly_rainfall FROM observed_rainfall GROUP BY station_id, month
- Wenn die Datenbank eine Geodatabase ist, registrieren Sie die Tabelle bei der Geodatabase, um eine optimale Performance zu erzielen und die Tabelle mit dem Feature-Layer zu verbinden.
Klicken Sie im Bereich Inhalt auf den Feature-Layer. Klicken Sie in der Registerkartengruppe Feature-Layer auf die Registerkarte Daten. Klicken Sie in der Gruppe Beziehung auf Verbindungen und dann auf Verbindung hinzufügen .
- Wenn sie keine Geodatabase ist, müssen Sie stattdessen eine der folgenden Strategien auswählen:
- Erstellen Sie eine Sicht in der Datenbank, die die Tabelle mit den Geometrien mit der neu erstellten Summentabelle verbindet.
- Erstellen Sie einen Abfrage-Layer, und definieren Sie die Verbindung in der Quelle des Abfrage-Layers.
- Zeigen Sie den Layer in der Karte mit einer Definitionsabfrage an, um Ergebnisse für einen bestimmten Monat anzuzeigen. Wenn Sie beispielsweise ausschließlich Ergebnisse des Monats Mai anzeigen möchten, verwenden Sie eine Definitionsabfrage, bei der Month = 5 ist.
Tipp:
Mit dem Windows-Taskplaner können Sie die Ausführung eines Tasks so planen, dass er in regelmäßigen Intervallen ausgeführt wird, um die Ergebnisse vorauszuberechnen.