HOW TO

Berechnen der Differenz zwischen zwei Datumsfeldern in einem Pop-up mit Arcade in Portal for ArcGIS Map Viewer

Last Published: January 30, 2024

Beschreibung

ArcGIS Arcade ist eine Ausdrucks-Sprache, die zum Konfigurieren von Pop-ups in Portal for ArcGIS Map Viewer verwendet werden kann. Die Arcade-Datumsfunktionen stellen Methoden zum Erstellen von Datumsobjekten und Abrufen verschiedener Eigenschaften der Objekte dar. Zum Beispiel werden die Funktionen "DateAdd()" und "DateDiff()" zum Anpassen des Datums basierend auf einem bestimmten Intervall verwendet, und die Funktion "Now()" wird zum Abrufen der aktuellen lokalen Uhrzeit des Clients verwendet.

In diesem Artikel werden die Schritte zum Berechnen der Differenz zwischen zwei Datumsfeldern im Pop-up in Portal for ArcGIS Map Viewer beschrieben. In diesem Beispiel wird die angezeigte Anzahl der Tage seit der letzten Hydranteninspektion ermittelt, indem die Feldwerte im Feld "Date Inspected" (wie in der folgenden Abbildung zu sehen) und die aktuelle lokale Uhrzeit des Clients referenziert werden.

Das Pop-up mit dem hervorgehobenen Feld "Date Inspected", das bei der Berechnung der Anzahl der Tage seit der letzten Hydranteninspektion zu referenzieren ist

Lösung oder Problemumgehung

  1. Öffnen Sie die Karte in Portal for ArcGIS Map Viewer. Klicken Sie auf der (dunklen) Werkzeugleiste Inhalt auf Layer, und wählen Sie den Layer mit dem zu bearbeitenden Pop-up aus. In diesem Beispiel wurde der Layer "Hydrant Painting for Collector" ausgewählt.
Die (dunkle) Map Viewer-Werkzeugleiste "Inhalt" mit der Registerkarte "Layer"
  1. Klicken Sie auf der (hellen) Werkzeugleiste Einstellungen auf Pop-ups, und klicken Sie auf Optionen > Attributausdrücke.
Der Map Viewer-Bereich "Pop-ups" dient zur Navigation zum Map Viewer-Bereich "Pop-up-Ausdrücke"
  1. Klicken Sie auf + Ausdruck hinzufügen, um das Fenster mit dem Editor für Arcade-Ausdrücke zu öffnen.
  2. Geben Sie im Editor-Fenster ggf. einen Namen für den neuen Ausdruck an.
  3. Fügen Sie im Dialogfeld Ausdruck den folgenden Arcade-Ausdruck ein.
  1. Definieren Sie die zu referenzierenden Datumsangaben.
var <variableName> = Now()
var <variableName1> = $feature.<date_fieldName>;
  1. Berechnen Sie die Differenz der Daten in Jahren.
var <variableName2> = Floor(DateDiff(<variableName>, <variableName1>, 'years'));
  1. Erstellen Sie ein neues Datum, indem Sie die Jahre zu dem Startdatum hinzufügen.
var <variableName3> = DateAdd(<variableName1>, <variableName2>, 'years');
  1. Berechnen Sie die Anzahl von Tagen zwischen diesen Daten.
var <variableName4> = DateDiff(<variableName>, <variableName3>, 'days');
  1. Definieren Sie die Beschränkungen für die Feldwerte, die im Pop-up angezeigt werden sollen.
if (IsEmpty($feature.<date_fieldName>)){
    return "<textValue>";
} else if (<variableName2> >= <numberValue>) {
    return "<textValue1> " + <variableName2> + " <textValue2> " + Floor(<variableName4> , <numberValue1>) + " <textValue3>";
} else if (<variableName2> == <numberValue2>) {
    return "<textValue4> " + Floor(<variableName4> , <numberValue1>) + " <textValue3>";
} else if (<variableName2> == <numberValue1> && <variableName4> >= <numberValue>) {
    return "<textValue1> " + Floor(<variableName4> , <numberValue1>) + " <textValue3>";
} else if (<variableName2> == <numberValue1> && <variableName4> >= <numberValue2>) {
    return "<textValue1> " + Floor(<variableName4> , <numberValue1>) + " <textValue5>";
} else if (<variableName2> == <numberValue1> && <variableName4> < <numberValue2>) {
    return "<textValue6>";
}

Der folgende Code-Block umfasst das voll funktionsfähigen Arcade-Skript.

var timeNow = Now();
var survey = $feature.DATEINSPECTED;
var y = Floor(DateDiff(timeNow, survey, 'years'));
var date1a = DateAdd(survey, y, 'years');
var d = DateDiff(timeNow, date1a, 'days');

if (IsEmpty($feature.DATEINSPECTED)){
    return "-";
} else if (y >= 2) {
    return "Last Inspection: " + y + " years and " + Floor(d , 0) + " days ago.";
} else if (y == 1) {
    return "Last Inspection: 1 year and " + Floor(d , 0) + " days ago.";
} else if (y == 0 && d >= 2) {
    return "Last Inspection: " + Floor(d , 0) + " days ago.";
} else if (y == 0 && d >= 1) {
    return "Last Inspection: " + Floor(d , 0) + " day ago.";
} else if (y == 0 && d < 1) {
    return "Last Inspection: today.";
}
  1. Klicken Sie auf Testen, um das Ergebnis des Ausdrucks in einer Vorschau anzuzeigen. Wenn das gewünschte Ergebnis angezeigt wird, klicken Sie auf OK.
Angeben des Arcade-Ausdrucks im Editor-Fenster in Portal for ArcGIS Map Viewer
  1. Klicken Sie auf die Schaltfläche Zurück über dem neu erstellten Arcade-Ausdruck im Bereich Attributausdrücke.
Der Portal for ArcGIS Map Viewer-Bereich "Pop-up-Ausdrücke" mit dem Symbol "Zurück" über dem neu erstellten Ausdruck
  1. Klicken Sie auf Felderliste, um die Liste der in den Pop-ups angezeigten Felder zu erweitern, und klicken Sie auf Felder auswählen.
  2. Aktivieren Sie das Ausdrucksfeld im Abschnitt Ausdrücke, und klicken Sie auf Fertig.

In der folgenden Abbildung ist das neu mit ArcGIS Arcade hinzugefügte Feld "Last Inspection (days)" im Pop-up zu sehen, das eine Anzahl von Tagen oder Jahren seit der letzten Inspektion eines Hydranten bereitstellt.

Das Endergebnis der Pop-up-Anzeige in Portal for ArcGIS Map Viewer

Artikel-ID: 000028205

Benachrichtigungen erhalten und Lösungen für neue oder häufige Probleme finden

Unser neuer KI-Chatbot stellt zusammengefasste Antworten und Videolösungen für Sie bereit.

Esri Support App herunterladen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Esri Support App herunterladen

Zu Download-Optionen wechseln