From 57790d44a9ceac203a738ca5e3e1894e59c00a67 Mon Sep 17 00:00:00 2001 From: Michael Van Ryn Date: Thu, 22 Feb 2024 10:32:48 -0700 Subject: [PATCH] Add JSON-EC-Processor.SRC --- JSON-EC-Processor.SRC | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 JSON-EC-Processor.SRC diff --git a/JSON-EC-Processor.SRC b/JSON-EC-Processor.SRC new file mode 100644 index 0000000..d05707e --- /dev/null +++ b/JSON-EC-Processor.SRC @@ -0,0 +1,71 @@ +{=========================== CustomJSONProcessor =============================} +{ Custom JSON data processor for the JSONXMLDriver - Env Canada History Data } +{ Processes Historical DISCHARGE & Level data with Timestamps } +{=============================================================================} + +( + Data; + UniqueID; +) +[ + CONSTANT IsJSONXMLProcessor = TRUE; + DrawLabel = "Env Can JSON Processor"; + NewData; + TimeValuePair Struct [ + Timestamp; + Value; + ]; + DateTime; + DateTimeVTS; + i; {for loop pointer} + r; {records retured in JSON} +] + +Main [ + If 1; + [ + + r = Data.numberReturned; {only process returned records} + + DateTime = New(r); + DateTimeVTS = New(r); + + + i = 0; + + WhileLoop(i < r , + DateTime[i] = Data.features[i].properties.DATETIME; + DateTimeVTS[i] = (datenum(substr(DateTime[i],8,2),substr(DateTime[i],5,2),substr(DateTime[i],0,4))*86400) + + (substr(DateTime[i],11,2)*3600) + (substr(DateTime[i],14,2)*60) + substr(DateTime[i],17,2); + i++); + + + NewData = Dictionary(); + + NewData["STATION_NUMBER"] = Data.features[0].properties.STATION_NUMBER; + NewData["STATION_NAME"] = Data.features[0].properties.STATION_NAME; + NewData["NEWEST_TIMESTAMP"] = Data.features[0].properties.DATETIME; + NewData["RECORDS_RETURNED"] = r; + NewData["DISCHARGE"] = Data.features[0].properties.DISCHARGE; + NewData["DISCHARGE:History"] = TimeValuePair(New(r), New(r)); + + i = 0; + WhileLoop(i < r , + NewData["DISCHARGE:History"].Value[r-i-1] = Data.features[i].properties.DISCHARGE; + NewData["DISCHARGE:History"].Timestamp[r-i-1] = DateTimeVTS[i]; + i++); + + NewData["LEVEL"] = Data.features[0].properties.LEVEL; + NewData["LEVEL:History"] = TimeValuePair(New(r), New(r)); + + i = 0; + WhileLoop(i < r , + NewData["LEVEL:History"].Value[r-i-1] = Data.features[i].properties.DISCHARGE; + NewData["LEVEL:History"].Timestamp[r-i-1] = DateTimeVTS[i]; + i++); + + NewData["UniqueID"] = UniqueID; + NewData["Timestamp"] = "Not a timestamp"; + Return(NewData); + ] +] \ No newline at end of file