Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("Usage: ImportCsv site_list.csv instant|daily daysBack");
                return;
            }
            FileUtility.CleanTempPath();
            Logger.EnableLogger();

            CsvFile csv      = new CsvFile(args[0]);
            int     daysBack = int.Parse(args[2]);

/*
 *
 * interval,filename,date_column,value_column,cbtt,pcode
 * instant,kid.csv,Time,MB1.Hw_FlowMeter,ACHO,QC1
 * instant,kid.csv,Time,MB1.Hw_FlowCalc,ACHO,QC2
 * instant,kid.csv,Time,MB1.MillerHill_FlowPump1,HMPO,QP1
 * instant,kid.csv,Time,MB1.MillerHill_FlowPump2,HMPO,QP2
 * instant,kid.csv,Time,MB1.MillerHill_FlowPump3,HMPO,QP3
 *
 */
            var rows     = csv.Select("interval = '" + args[1] + "'");
            var interval = TimeInterval.Daily;

            if (args[1] == "instant")
            {
                interval = TimeInterval.Irregular;
            }

            Console.WriteLine("Processing " + rows.Length + " parameters");
            for (int i = 0; i < rows.Length; i++)
            {
                var filename    = rows[i]["filename"].ToString();
                var dateColumn  = rows[i]["date_column"].ToString();
                var valueColumn = rows[i]["value_column"].ToString();
                var cbtt        = rows[i]["cbtt"].ToString();
                var pcode       = rows[i]["pcode"].ToString();

                DataTable tbl = new CsvFile(filename);

                CalculationSeries s = new CalculationSeries();
                s.TimeInterval            = interval;
                s.Expression              = valueColumn;
                s.Parser.VariableResolver = new DataTableVariableResolver(tbl, dateColumn);
                s.Calculate(DateTime.Now.AddDays(-daysBack), DateTime.Now);

                Console.WriteLine("Processing " + cbtt + "_" + pcode + " " + s.Count + " records");

                TimeSeriesTransfer.Import(s, cbtt, pcode);
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Usage: ImportOwrd site_list.csv hoursBack");
                return;
            }

            int hoursBack = Convert.ToInt32(args[1]);

            Point.MissingValueFlag = 998877;
            bool errors = false;

            CsvFile csv = new CsvFile(args[0], CsvFile.FieldTypes.AllText);

            foreach (DataRow row in csv.Rows)
            {
                string site_id = row["site_id"].ToString();
                string pcode   = row["pcode"].ToString();
                string cbtt    = row["cbtt"].ToString();


                var s = new OwrdSeries(site_id, OwrdSeries.OwrdDataSet.Instantaneous_Flow, true);
                try
                {
                    s.Read(DateTime.Now.AddHours(-hoursBack), DateTime.Now);

                    s.RemoveMissing();
                    Console.WriteLine(cbtt + " " + s.Count + " points");
                    if (s.Count > 0)
                    {
                        TimeSeriesTransfer.Import(s, cbtt, pcode);
                    }
                }
                catch (Exception e)
                {
                    errors = true;
                    Console.WriteLine(e.Message);
                }
            }

            if (errors)
            {
                Console.WriteLine("Error reading one or more sites");
            }
        }
Ejemplo n.º 3
0
        private static Series ProcessFile(string url, TimeInterval interval, string cbtt, string pcode,
                                          double offset, params string[] headers)
        {
            //Series s;
            //if (interval == TimeInterval.Hourly)
            //{
            //    s = CorpsHourlyFile.ReadCorpsDataFile(url, headers);
            //}
            //else
            //{
            var s = CorpsDataFile.ReadCorpsDataFile(url, interval, headers);
            // }



            string units = headers[headers.Length - 1];

            if (offset != 0)
            {
                s = s + offset;
            }

            //if  ( (cbtt.ToLower() == "gcl" || cbtt.ToLower() == "bnk") && pcode.ToLower() == "fb")
            //{// compute acre-feet using rating table.

            //    var af = TimeSeriesDatabaseDataSet.RatingTableDataTable.ComputeSeries(s, cbtt.ToLower()+ "_af.csv");
            //    TimeSeriesTransfer.Import(af, cbtt, "af");
            //}

            if (units == "(kcfs)" || units == "(kaf)" || pcode == "Q" || pcode == "QW" || pcode == "QE")
            {// multiply by 1000
                Reclamation.TimeSeries.Math.Multiply(s, 1000.0);
            }

            TimeSeriesTransfer.Import(s, cbtt, pcode);

            return(s);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// reads USGS instant streamflow data and saves in Hydromet format
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Usage: ImportUsgs site_list.csv hoursBack");
                return;
            }

            int hoursBack = Convert.ToInt32(args[1]);

            Point.MissingValueFlag = 998877;
            bool errors = false;

            CsvFile csv = new CsvFile(args[0], CsvFile.FieldTypes.AllText);

            foreach (DataRow row in csv.Rows)
            {
                var    interval       = GetInterval(row);
                string site_id        = row["site_id"].ToString();
                string usgs_parameter = row["usgs_parameter"].ToString();
                string pcode          = row["pcode"].ToString();
                string cbtt           = row["cbtt"].ToString();
                Series s;

                Console.WriteLine(cbtt);
                if (interval == TimeInterval.Daily)
                {
                    if (usgs_parameter.ToLower() == "gageheight")
                    {
                        s = new UsgsDailyValueSeries(site_id, UsgsDailyParameter.DailyMeanDischarge);
                    }
                    else
                    {
                        Logger.WriteLine("Error: the parameter '" + usgs_parameter + "' is not yet supported");
                        s = new Series();
                    }
                    s.Read(DateTime.Now.AddHours(-hoursBack), DateTime.Now);

                    TimeSeriesTransfer.Import(s, cbtt, pcode, "usgs");
                }
                else if (interval == TimeInterval.Irregular)
                {
                    if (usgs_parameter.ToLower() == "watertemp")
                    {
                        s = new UsgsRealTimeSeries(site_id, UsgsRealTimeParameter.Temperature);
                    }
                    else
                    if (usgs_parameter.ToLower() == "gageheight")
                    {
                        s = new UsgsRealTimeSeries(site_id, UsgsRealTimeParameter.GageHeight);
                    }
                    else if (usgs_parameter.ToLower() == "discharge")
                    {
                        s = new UsgsRealTimeSeries(site_id, UsgsRealTimeParameter.Discharge);
                    }
                    else
                    {
                        Logger.WriteLine("Error: the parameter '" + usgs_parameter + "' is not yet supported");
                        s = new Series();
                    }

                    try
                    {
                        s.Read(DateTime.Now.AddHours(-hoursBack), DateTime.Now);

                        if (usgs_parameter.ToLower() == "watertemp" && pcode.ToLower() == "wf")
                        {
                            //(°C × 9/5) + 32 = °F
                            s = s * 9.0 / 5.0 + 32.0;
                        }

                        s.RemoveMissing();
                        if (s.Count > 0)
                        {
                            TimeSeriesTransfer.Import(s, cbtt, pcode, "usgs");
                        }
                    }
                    catch (Exception e)
                    {
                        errors = true;
                        Console.WriteLine(e.Message);
                    }
                }
            }



            if (errors)
            {
                throw new Exception("Error reading one or more sites");
            }
        }