Ich versuche, eine Karte anhand der seit einem Datum aus dem Feld „DATE_ISSUE“ bis heute (also: Today()) verstrichenen Zeit zu symbolisieren: Ist der Punkt weniger als 6 Monate alt, ist er „aktiv“; ist er mehr als ein Jahr alt, ist er „abgelaufen“; liegt sein Alter zwischen 6 Monaten und einem Jahr, ist er „alt“; und wenn für „DATE_ISSUE“ kein Datum eingetragen wurde, ist er „ausstehend“.
Ich habe einen Testdatensatz mit 67 Punkten. Für 24 wurde kein Datum eingetragen. Ein Punkt stammt vom 8. Dezember 2016 (518 Tage alt), einer vom 8. September 2017 (244 Tage alt), einer vom 12. Mai 2017 (363 Tage alt); die übrigen stammen aus dem Januar 2018 oder später.
Bis jetzt habe ich Folgendes:
var pDate = Date(Today());
var rDate = Date($feature["DATE_ISSUE"]);
var age = DateDiff(pDate, rDate, 'days');
if (age < 182.5){
"ACTIVE"
}
else if(age >= 182.5 && age <355){
"OLD"
}
else if (age >= 365 && age < 10000){
"EXPIRED"
}
else if (age > 10000){
"PENDING"
}
Die letzte else-if-Bedingung ist das Ergebnis eines leeren Felds „DATE_ISSUE“, das in der DateDiff-Funktion als 17.661,33 berechnet wird.
Damit erhalte ich 40 „Active“, 24 „Pending“, und die drei Objekte, die älter als 182,5 Tage sind, sind einfach verschwunden. Wirklich. In meiner Attributtabelle werden alle 67 angezeigt. In den Symbolisierungsoptionen werden insgesamt 64 Punkte angezeigt und 0 unter „Other“. Wenn ich „Other“ aktiviere, erscheinen die drei Punkte, obwohl die Anzahl 0 beträgt.
Wenn ich die DateDiff-Funktion überprüfe, werden keine Werte über 126 Tagen ausgegeben, abgesehen von dem zuvor erwähnten Wert 17.661,33.
Ich möchte abgelaufene oder alte Punkte lediglich visuell kennzeichnen, damit die Büromitarbeiter nicht nach ihnen suchen müssen.