Ejemplo n.º 1
0
        public static TimeSeriesComplexType FromTimeSeries(TimeSeries ts, string forcedTimeStamp)
        {
            TimeSeriesComplexType result = new TimeSeriesComplexType( );

            string locationName = LocationName(ts.name);

            result.header = new HeaderComplexType
            {
                type       = timeSeriesType.mean,
                locationId = locationName,
                //stationName = locationName,
                startDate = new DateTimeComplexType {
                    DateTime = MergeDT(ts.Start, forcedTimeStamp)
                },
                endDate = new DateTimeComplexType {
                    DateTime = MergeDT(ts.End, forcedTimeStamp)
                },
                missVal     = ts.NullValue,
                units       = PIUnits(ts),
                timeStep    = PITimeStep(ts.timeStep),
                parameterId = ParameterName(ts.name)
            };

            IList <EventComplexType> events = new List <EventComplexType>();

            for (int i = 0; i < ts.count(); i++)
            {
                var fewsDT = new DateTimeComplexType {
                    DateTime = MergeDT(ts.timeForItem(i), forcedTimeStamp)
                };
                events.Add(new EventComplexType
                {
                    date          = fewsDT.date,
                    time          = fewsDT.time,
                    flag          = 2,
                    flagSpecified = true,
                    value         = ts[i]
                });
            }

            result.@event = events.ToArray();
            return(result);
        }
Ejemplo n.º 2
0
        public static TimeSeries ConvertTimeSeriesFromFEWS(TimeSeriesComplexType fewsTS)
        {
            var      header  = fewsTS.header;
            DateTime tsStart = DateTimeComplexType.DateTimeFromPI(header.startDate);
            DateTime tsEnd   = DateTimeComplexType.DateTimeFromPI(header.endDate);
            TimeStep step    = TimeStepFromPI(header.timeStep);

            TimeSeries result = new TimeSeries(tsStart, tsEnd, step);

            result.name = header.parameterId + "_" + header.locationId;

            foreach (var e in fewsTS.@event)
            {
                var dt = DateTimeComplexType.Merge(e.date, e.time);
                result.setTime(dt, e.value);
            }

            return(result);
        }
Ejemplo n.º 3
0
        public static void Run(RunComplexType runSettings, Diagnostics diagnostics, string[] args)
        {
            var start = DateTimeComplexType.DateTimeFromPI(runSettings.startDateTime);
            var end   = DateTimeComplexType.DateTimeFromPI(runSettings.endDateTime);

//            string dateFormat = "dd/MM/yyyy";
            var dtf = Thread.CurrentThread.CurrentCulture.DateTimeFormat;

            string dateFormat = dtf.ShortDatePattern; // "MM/dd/yyyy";

            if (runSettings.TimeStepInSeconds != 86400)
            {
                dateFormat += " HH:mm:ss";
            }

            string sourceExe     = runSettings.SourceExeToUse();
            string sourceProject = runSettings.Property(Keys.PROJECT_FILE);

            string sourceOutput = runSettings.Property(Keys.OUTPUT_FILE);

            if (File.Exists(sourceOutput))
            {
                diagnostics.Log(3, string.Format("Deleting old source output file {0}", sourceOutput));
                File.Delete(sourceOutput);
            }

            string mode = runSettings.ExecutionMode();

            if (mode == "")
            {
                if (runSettings.ConfiguredServer() != "")
                {
                    diagnostics.Log(3, string.Format("Running locally because configured server ({0}) is unavailable", runSettings.ConfiguredServer()));
                }
            }
            else
            {
                sourceProject = "";
            }

            string sourceCommand = string.Format("-p \"{0};;{1};{2}\" {4} -o {3}",
                                                 sourceProject, start.ToString(dateFormat),
                                                 end.ToString(dateFormat), sourceOutput, mode);

            diagnostics.Log(3, string.Format("Starting Source Run with command line {0}", sourceCommand));

            ProcessStartInfo startInfo = new ProcessStartInfo
            {
                Arguments              = sourceCommand,
                CreateNoWindow         = true,
                FileName               = sourceExe,
                UseShellExecute        = false,
                RedirectStandardError  = true,
                RedirectStandardOutput = true
            };
            Process p      = Process.Start(startInfo);
            string  output = p.StandardOutput.ReadToEnd();

            p.WaitForExit();
            string errors = p.StandardError.ReadToEnd();

            if (!File.Exists(sourceOutput))
            {
                File.WriteAllText(runSettings.workDir + "\\SourceErrors.txt", errors);
                File.WriteAllText(runSettings.workDir + "\\SourceOutput.txt", output);
                foreach (string line in errors.Split('\n'))
                {
                    diagnostics.Log(1, line);
                }
                throw new Exception(string.Format("Source run failed. No output file: {0}", sourceOutput));
            }

            diagnostics.Log(3, "All done");
        }