Exemplo n.º 1
0
        private string ConfigName(McfDataSet.sitemcfRow s)
        {
            string rval = "unknown";

            if (s.DCPMFG == "S" && s.REPINT == 60 &&
                s.SCHAN != 42 && s.SCHAN != 54)
            {
                rval = "SutronSatlink";
            }

            if (s.DCPMFG == "S")
            {
                rval = "Sutron8xxx";
            }
            if (s.DCPMFG == "D")
            {
                rval = "DesignAnalysis";
            }

            if (s.DCPMFG == "V")
            {
                rval = "VitelVX1004";
            }

            if (s.DCPMFG == "A")
            {
                rval = "FTSTX312";
            }


            return(rval + "-pnusbr");
        }
Exemplo n.º 2
0
        internal void AddBatteryVoltConverter(int decodesScriptID, int sensorNumber, McfDataSet.sitemcfRow s)
        {
            int id = -1;

            if (s.DCPMFG == "V") // vitel
            {
                id = LinearEquation(.1, 9.5, "v");
            }
            else
            if (s.DCPMFG == "S")
            {
                id = LinearEquation(.234, 10.6, "v");
            }
            else
            if (s.DCPMFG == "A")
            {
                id = LinearEquation(1, 0, "v");
            }
            else if (s.DCPMFG == "D" || s.DCPMFG == "O")
            {
                id = UsgsEquation(.313, -32, 1, 10.3, "v");
            }

            if (id >= 0)
            {
                decodes.scriptsensor.AddscriptsensorRow(decodesScriptID, sensorNumber, id);
            }
        }
Exemplo n.º 3
0
        private string LookupGoesDataFormat(string fmt, McfDataSet.sitemcfRow s)
        {
            string rval = "I";


            //s.DCPMFG

            if (fmt == "X")
            {
                rval = "bc";
            }

            if (fmt == "S")
            {
                rval = "bd"; // design analysis
            }
            if (fmt == "T")
            {
                rval = "I";
            }

            if (fmt == "B")
            {
                rval = "b";
            }

            if (fmt == "F")
            {
                rval = "A";
            }

            return(rval);
        }
Exemplo n.º 4
0
        private String getHydrometCatagoryName(McfDataSet.sitemcfRow s)
        {
            if (s.CATID == "WMCO" || s.ACL == "WMCO")
            {
                return("AgriMet");
            }
            if (s.CATID == "BURL")
            {
                return("Burley");
            }
            if (s.CATID == "KLAM")
            {
                return("Klamath");
            }
            if (s.CATID == "ROGU")
            {
                return("Rogue");
            }
            if (s.CATID == "UMAT")
            {
                return("Umatilla");
            }
            if (s.CATID == "SNOT")
            {
                return("snotel");
            }
            if (s.CATID == "YAKR")
            {
                return("Yakima");
            }
            if (s.CATID == "IDWD")
            {
                return("IDWR");
            }
            if (s.CATID == "DESU")
            {
                return("Deschutes");
            }
            if (s.CATID == "BOIA")
            {
                return("Boise-Payette");
            }

            return(s.CATID);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Scaling, offset, shift, etc.
        /// Done by adding appropirate row to scriptsensor
        /// </summary>
        /// <param name="decodesScriptID"></param>
        /// <param name="sensorNumber"></param>
        /// <param name="goes"></param>
        /// <param name="s"></param>
        internal void AddUnitConverter(int decodesScriptID, int sensorNumber, McfDataSet.goesmcfRow goes, McfDataSet.sitemcfRow s)
        {
            int unitconverterid = GetUnitConverterID(goes, s);

            if (unitconverterid >= 0)
            {
                decodes.scriptsensor.AddscriptsensorRow(decodesScriptID, sensorNumber, unitconverterid);
            }
            else
            {
                Console.WriteLine("did not find unit converter " + goes.GOESDEC);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Find appropriate method for to scale, offset, etc
        /// If necessary create entry in unitconverter. Otherwise use
        /// existing unitconverter.
        /// </summary>
        /// <param name="goes"></param>
        /// <returns></returns>
        internal int GetUnitConverterID(McfDataSet.goesmcfRow goes, McfDataSet.sitemcfRow s)
        {
            var rows = (McfDataSet.pcodemcfRow[])mcf.pcodemcf.Select("PCODE ='" + goes.GOESDEC + "'");

            //if( s.SITE.IndexOf("ARNO") >=0 )
            //     Console.WriteLine("");

            if (rows.Length == 0)
            {
                Logger.WriteLine("Error: could not find '" + goes.GOESDEC + "' in pcode table");
                return(-1);
            }


            if (s.CTYPE == "S")
            {
                Logger.WriteLine("Warning <skipping unit conversion>:  Site based processing '" + s.SITE + "'");
                return(-1);
            }

            var pcode = rows[0];



            if (pcode.ACTIVE == 0 || goes.ACTIVE == 0)
            {
                Logger.WriteLine("parameter not active :" + goes.GOESDEC);
                return(-1);
            }

            // DONT' look at goes.RTCNAME ( pcode.RTCPROC is used instead)
            if (!pcode.IsRTCPROCNull() && pcode.RTCPROC.Trim().Replace("\0", "") != "")
            {
                // TO DO  GH_WEIR, GH_WEIRX,
                if (pcode.RTCPROC.ToLower().Trim() == "ch_weir")
                {
                    //Y  =  A*( B*x +C + D )^E
                    //return Weir(pcode.SCALE, 0.01, pcode.OFFSET, pcode.SHIFT,pcode.BASE);
                    return(LinearEquation(0.01, 0, "ft"));
                }
                if (pcode.RTCPROC.ToLower().Trim() == "gh_vshift" || pcode.RTCPROC.ToLower().Trim() == "gh_lim")
                {
                    return(LinearEquation(pcode.SCALE, pcode.OFFSET, "ft"));
                }

                Logger.WriteLine("not implemented Rtcm routine :" + pcode.RTCPROC);
                return(-1);
            }
            string parameterName = goes.GOESDEC.Substring(7).Trim();

            // string siteName = goes.GOESDEC.Substring(0, 8).Trim();

            if (parameterName == "FB" || parameterName == "FB2")
            {
                return(LinearEquation(pcode.SCALE, pcode.OFFSET, "ft"));
            }
            else if (parameterName == "PC")
            {
                return(LinearEquation(pcode.SCALE, pcode.OFFSET, "in"));
            }
            else if (parameterName.IndexOf("GH") == 0 ||
                     parameterName.IndexOf("CH") == 0)    // || parameterName == "GH2", GH-L2, GH-L3 )
            {
                return(LinearEquation(pcode.SCALE, pcode.OFFSET, "ft"));
                //return UsgsEquation(pcode.SCALE, pcode.OFFSET, 1.0, 0.0);
            }
            else if (parameterName.Trim() == "OB" || parameterName.Trim() == "TV" || parameterName == "WF")
            {
                if (System.Math.Abs(pcode.SCALE) < 0.000001)    // basically zero
                {
                    return(LinearEquation(0.07862, -99.02, "degF"));
                }
                else
                {
                    return(LinearEquation(pcode.SCALE, pcode.OFFSET, "degF"));
                }
            }
            else if (parameterName.Trim() == "WC")
            {
                if (System.Math.Abs(pcode.SCALE) < 0.000001)    // basically zero
                {
                    return(LinearEquation(0.1221, pcode.OFFSET, "degC"));
                }
                else
                {
                    return(LinearEquation(pcode.SCALE, pcode.OFFSET, "degC"));
                }
            }

            string units = GetUnits(parameterName);

            return(LinearEquation(pcode.SCALE, pcode.OFFSET, units));


            //return -1;
        }
Exemplo n.º 7
0
        private void InsertGoesPlatform(string[] siteFilter, int networklistid)
        {
            for (int i = 0; i < mcf.sitemcf.Rows.Count; i++)
            {
                McfDataSet.sitemcfRow s = mcf.sitemcf[i];

                if (siteFilter.Length > 0 && Array.IndexOf(siteFilter, s.SITE.Trim()) < 0)
                {
                    continue;
                }


                string nessid = s.NESSID.Trim();

                if (s.TTYPE != "SAT" || s.MASTERSW == 0 || nessid == "" || nessid == "0" ||
                    decodes.transportmedium.Select("mediumid='" + nessid + "'").Length > 0 || s.PCHAN == 199)
                {
                    Console.WriteLine("Skipping adding existing platform " + s.SITE + " " + s.NESSID);
                    continue;
                }

                string cfgName             = "";//
                string platformDesignator  = "";
                string platformDescription = "";
                string parameterFilter     = "";


                List <McfDataSet.sitemcfRow> sitesAtTransmitter =
                    new List <McfDataSet.sitemcfRow>(from row in mcf.sitemcf.AsEnumerable()
                                                     where row.NESSID == nessid
                                                     //&& row.NESSID != ""
                                                     //&& row.NESSID != "0"
                                                     orderby row.SITE
                                                     select row);


                for (int j = 0; j < sitesAtTransmitter.Count; j++)
                {
                    //if (transmitters.Count > 1)
                    //  Logger.WriteLine(transmitters[j].SITE);
                    if (cfgName.Length > 0)
                    {
                        cfgName += "-";
                    }
                    cfgName += "" + sitesAtTransmitter[j].SITE.Trim();

                    if (platformDesignator.Length > 0)
                    {
                        platformDesignator += "-";
                    }
                    platformDesignator += sitesAtTransmitter[j].SITE.Trim();

                    if (platformDescription.Length > 0)
                    {
                        platformDescription += "\n   ";
                    }
                    platformDescription += sitesAtTransmitter[j].DESCR;

                    if (parameterFilter.Length > 0)
                    {
                        parameterFilter += " or ";
                    }
                    parameterFilter += " GOESDEC like '" + sitesAtTransmitter[j].SITE.PadRight(8) + "%' ";
                }
                //cfgName +="-"+ConfigName(s);


                var pc = decodes.platformconfig;
                var p  = decodes.platform;
                // build Platform and Platform Config together.

                int siteID = LookupSiteIDFromCBTT(s.SITE.Trim());


                pc.AddplatformconfigRow(platformConfigID, cfgName, s.DESCR, GetManufactureCode(s.DCPMFG));
                p.AddplatformRow(platformID, s.GetAgencyName(), "TRUE", siteID, platformConfigID, platformDescription, DateTime.Now,
                                 DateTime.Now.AddYears(100).Date, platformDesignator);

                decodes.transportmedium.AddtransportmediumRow(platformID, "goes-self-timed", nessid, "ST",
                                                              s.PCHAN, s.REPTIM, s.TSSIZ, s.REPINT * 60, GetManufactureCode(s.DCPMFG),
                                                              0, "S", "UTC");

                decodes.networklistentry.AddnetworklistentryRow(networklistid, nessid);

                decodes.platformproperty.AddplatformpropertyRow(platformID, "HydrometGroup", getHydrometCatagoryName(s));

                if (s.IsIdahoPower)
                {
                    decodes.platformproperty.AddplatformpropertyRow(platformID, "IdahoPower", "True");
                }
                if (s.IsUsgs)
                {
                    decodes.platformproperty.AddplatformpropertyRow(platformID, "USGS", "True");
                }
                if (s.IsOwrd)
                {
                    decodes.platformproperty.AddplatformpropertyRow(platformID, "OWRD", "True");
                }

                var parameters = (McfDataSet.goesmcfRow[])mcf.goesmcf.Select(parameterFilter + " and ACTIVE = 1");

                //Logger.WriteLine(parameters.Length.ToString() + " parameters at " + transmitters.Count + " SITE");

                //int configId = platformID;
                //int decodesScriptID = configID;
                string dataOrder = "D";
                if (s.DCPMFG == "A")
                {
                    dataOrder = "A";
                }

                decodes.decodesscript.AdddecodesscriptRow(decodesScriptID, platformConfigID, "ST", "Decodes", dataOrder);

                BuildDecodesScripts(sitesAtTransmitter.ToArray(), siteID, parameters, platformConfigID, decodesScriptID);
                InsertBatteryVoltScript(platformConfigID, decodesScriptID, parameters.Length + 1, s);
                m_converter.AddBatteryVoltConverter(decodesScriptID, parameters.Length + 1, s);
                platformID++;
                platformConfigID++;
                decodesScriptID++;
            }
        }
Exemplo n.º 8
0
        private void InsertBatteryVoltScript(int configId, int decodesScriptID, int sensorNumber, McfDataSet.sitemcfRow s)
        {
            int    size          = 1;
            int    batteryOffset = 0;
            string dataType      = "b";

            if (s.DCPMFG == "A")
            {
                size          = 3;
                batteryOffset = s.SMSGLEN - 4;
                dataType      = "bc";
            }
            else
            {
                batteryOffset = s.SMSGLEN - 2;
            }
            string script = "1p," + batteryOffset + "x,f(s," + dataType + "," + size + "," + sensorNumber + ")";

            decodes.formatstatement.AddformatstatementRow(decodesScriptID, sensorNumber, "ST", script);
            decodes.configsensor.AddconfigsensorRow(configId, sensorNumber, "BATVOLT", "F", 60 * 60,
                                                    0, 0, -.1, 99999999, "");
            decodes.configsensordatatype.AddconfigsensordatatypeRow(configId, sensorNumber, GetDataTypeID("BATVOLT"));
        }
Exemplo n.º 9
0
        private void InsertGoesPlatform(int networklistid)
        {
            platformID       = NextID(svr, "platform");
            platformConfigID = NextID(svr, "platformconfig");
            decodesScriptID  = NextID(svr, "decodesscript");

            for (int i = 0; i < mcf.sitemcf.Rows.Count; i++)
            {
                McfDataSet.sitemcfRow s = mcf.sitemcf[i];

                //var usgs_id = "";
                //if (!UsgsSite(s.SITE, out usgs_id))
                //  continue;
                if (!InSiteList(s.SITE))
                {
                    continue;
                }

                string nessid = s.NESSID.Trim();

                if (s.TTYPE != "SAT" || s.MASTERSW == 0 || nessid == "" || nessid == "0" ||
                    decodes.transportmedium.Select("mediumid='" + nessid + "'").Length > 0 || s.PCHAN == 199)
                {
                    Console.WriteLine("Skipping adding existing/parked platform " + s.SITE + " " + s.NESSID);
                    continue;
                }

                string cfgName             = "";//
                string platformDesignator  = "";
                string platformDescription = "";
                string parameterFilter     = "";

                List <McfDataSet.sitemcfRow> sitesAtTransmitter =
                    new List <McfDataSet.sitemcfRow>(from row in mcf.sitemcf.AsEnumerable()
                                                     where row.NESSID == nessid
                                                     //&& row.NESSID != ""
                                                     //&& row.NESSID != "0"
                                                     orderby row.SITE
                                                     select row);



                for (int j = 0; j < sitesAtTransmitter.Count; j++)
                {
                    if (cfgName.Length > 0)
                    {
                        cfgName += "-";
                    }
                    cfgName += "" + sitesAtTransmitter[j].SITE.Trim();

                    if (platformDesignator.Length > 0)
                    {
                        platformDesignator += "-";
                    }
                    platformDesignator += sitesAtTransmitter[j].SITE.Trim();

                    if (platformDescription.Length > 0)
                    {
                        platformDescription += "\n   ";
                    }
                    platformDescription += sitesAtTransmitter[j].DESCR;

                    if (parameterFilter.Length > 0)
                    {
                        parameterFilter += " or ";
                    }
                    parameterFilter += " GOESDEC like '" + sitesAtTransmitter[j].SITE.PadRight(8) + "%' ";
                }

                var pc = decodes.platformconfig;
                var p  = decodes.platform;
                // build Platform and Platform Config together.

                int siteID = LookupSiteIDFromCBTT(s.SITE.Trim());

                var duplicates = pc.Select("name = '" + cfgName + "'");
                if (duplicates.Length > 0)
                {
                    Console.WriteLine(cfgName + " allready exists.. skipping");
                    continue;
                }

                pc.AddplatformconfigRow(platformConfigID, cfgName, s.DESCR, GetManufactureCode(s.DCPMFG));
                p.AddplatformRow(platformID, GetAgencyName(s.GRP), "TRUE", siteID, platformConfigID, platformDescription,
                                 LinuxUtility.ToUnixTime(DateTime.Now.Date) * 1000,
                                 LinuxUtility.ToUnixTime(DateTime.Now.AddYears(100)) * 1000, platformDesignator);

                decodes.transportmedium.AddtransportmediumRow(platformID, "goes-self-timed", nessid, "ST",
                                                              s.PCHAN, s.REPTIM, s.TSSIZ, s.REPINT * 60, GetManufactureCode(s.DCPMFG),
                                                              0, "S", "UTC", "", 0, 0, "U", 0, "FALSE", "", "");

                decodes.networklistentry.AddnetworklistentryRow(networklistid, nessid, s.SITE.Trim(), s.DESCR);

                decodes.platformproperty.AddplatformpropertyRow(platformID, "HydrometGroup", getHydrometCatagoryName(s));

                decodes.platformproperty.AddplatformpropertyRow(platformID, "USGS", "True");
                decodes.platformproperty.AddplatformpropertyRow(platformID, "expectLength", s.SMSGLEN.ToString());

//            need parameter filter....
                var parameters = (McfDataSet.goesmcfRow[])mcf.goesmcf.Select(parameterFilter + " and ACTIVE = 1");

                string dataOrder = "D";
                if (s.DCPMFG == "A")
                {
                    dataOrder = "A";
                }

                decodes.decodesscript.AdddecodesscriptRow(decodesScriptID, platformConfigID, "ST", "Decodes", dataOrder);

                BuildDecodesScripts(sitesAtTransmitter.ToArray(), siteID, parameters, platformConfigID, decodesScriptID);
                InsertBatteryVoltScript(platformConfigID, decodesScriptID, parameters.Length + 1, s);
                m_converter.AddBatteryVoltConverter(decodesScriptID, parameters.Length + 1, s);
                platformID++;
                platformConfigID++;
                decodesScriptID++;
            }
        }