Aggregieren von Werten in verwandten Features

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.
    Abfrageparameter sind in diesem Workflow optional. Weitere Informationen zum Hinzufügen von Bereichsparametern und Filtern mithilfe von diskontinuierlichen Parametern finden Sie unter Definieren von Parametern in einem Abfrage-Layer.

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. 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.

Dynamisches Berechnen aggregierter Ergebnisse mit Parametern für Abfrage-Layer

Dies ist die flexiblere Methode der beiden, mit der sichergestellt wird, dass die meisten aktuellen Ergebnisse immer dargestellt werden. Sie verwenden die Aggregations- und Verbindungsfunktionen für SQL-Datenbanken. Hierzu müssen Sie in ArcGIS Pro einen Abfrage-Layer erstellen.

Diese Methode hat jedoch Nachteile. Dazu zählen folgende:

  • Eine erhöhte Auslastung der Datenbank, da die aggregierten Ergebnisse jedes Mal berechnet werden, wenn Sie durch die Karte navigieren, den Zeitschieberegler verwenden oder die Attributtabelle öffnen.
  • Dadurch ist es erforderlich, die Daten in einer Enterprise-Datenbank zu speichern. 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.

  1. Klicken Sie auf der Registerkarte Karte in der Gruppe Layer im Menü Daten hinzufügen auf Abfrage-Layer.
  2. 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
  3. Klicken Sie auf Weiter, um die restlichen Anweisungen im Dialogfeld Neuer Abfrage-Layer abzuschließen und der aktuellen Karte den Abfrage-Layer hinzuzufügen.
  4. 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.

Wenn Sie den Zeitraum ändern möchten, um beispielsweise dieselbe Visualisierung anzuzeigen, jedoch stattdessen vom 1. bis 15. August, können Sie die Quelle des Abfrage-Layers öffnen und die WHERE-Klausel ändern. Da dies umständlich ist, ist die Verwendung des Zeitschiebereglers vorzuziehen, um diese Änderung vorzunehmen. Um Änderungen der WHERE-Klausel mit dem Zeitschieberegler durchzuführen, müssen Sie Parameter in der SQL-Anweisung verwenden.

  1. Klicken Sie im Bereich Inhalt mit der rechten Maustaste auf den Layer, und klicken Sie auf Eigenschaften Eigenschaften.
  2. Klicken Sie auf der Registerkarte Quelle in der Zeile Abfrage der Tabelle auf Abfrage bearbeiten Metadaten 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.

  3. 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
  4. Parameter sind in der SQL-Abfrage fett formatiert und neben ihnen befindet sich ein Symbol Metadaten bearbeiten. Klicken Sie auf das Symbol, um Eigenschaften des Parameters wie folgt festzulegen:
    • Feld oder Ausdruck: collection_date
    • Datentyp: Datum
    • Standardwerte: Aktiviert
    • Standardwertebereich: 6/1/2016 bis 6/30/2016
  5. Klicken Sie auf Fertig.
  6. 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.

  1. Fügen Sie zur Darstellung des Monats ein neues ganzzahliges Feld in die Feature-Class namens month ein.
  2. 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
  3. 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.
  4. Verwenden Sie das Werkzeug Feld verbinden oder Verbindung hinzufügen aus, um Datensätze aus der Summentabelle mit dem Feature-Layer zu verbinden.
  5. 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.

  1. 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
  2. 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.

    Wählen Sie den Feature-Layer im Bereich Inhalt aus. Klicken Sie unter der Registerkarte Feature-Layer auf der Registerkarte Daten in der Gruppe Beziehung auf Verbindungen und auf Verbindung hinzufügen.

  3. 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.
  4. 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.

Verwandte Themen