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"); }
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); } }
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); }
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); }
/// <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); } }
/// <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; }
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++; } }
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")); }
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++; } }