private void SavePlanktonDataFile(PicesDataBaseImageList planktonData) { String errMsg = ""; StreamWriter sw = null; try { sw = new StreamWriter(dataFileName); } catch (Exception e1) { errMsg = e1.ToString(); } if (sw == null) { errMsg = "Could not open Data File[" + dataFileName + "]\n" + errMsg; return; } sw.WriteLine("//This file was generated by the PICESComander application."); sw.WriteLine(); sw.WriteLine("DateTime" + "\t" + DateTime.Now.ToString("yyyy/MM/dd - hh:mm:ss")); sw.WriteLine("DataBase" + "\t" + dbConn.ServerDescription()); sw.WriteLine("MachineName" + "\t" + System.Environment.MachineName); sw.WriteLine(); sw.WriteLine("//Selection Criteria"); WriteValue(sw, "GroupName", GroupName.Text); WriteValue(sw, "CruiseName", CruiseName.Text); WriteValue(sw, "StationName", StationName.Text); WriteValue(sw, "DeploymentNum", DeploymentNum.Text); WriteValue(sw, "SipperFile", SipperFile.Text); if (mlClass != null) { WriteValue(sw, "MLClass", mlClass.Name); } sw.WriteLine("Probability Min-Max" + "\t" + (100.0f * probMin).ToString("##0.00") + "\t" + (100.0f * probMax).ToString("##0.00")); if ((depthMin > 0.0f) || (depthMax > 0.0f)) { sw.WriteLine("Depth" + "\t" + depthMin.ToString("###0.00") + "\t" + depthMax.ToString("###0.00")); } if ((sizeMin > 0) || (sizeMax > 0)) { sw.WriteLine("Size" + "\t" + sizeMin.ToString("#####0") + "\t" + sizeMax.ToString("######0")); } sw.WriteLine("ClassKeyToUse" + "\t" + classKeyToUse.ToString()); sw.WriteLine(); sw.WriteLine("Count" + "\t" + planktonData.Count); sw.WriteLine(); sw.WriteLine("//Following specifies column headers."); sw.Write("ImageFileName"); sw.Write("\t"); sw.Write("Class1Name"); sw.Write("\t"); sw.Write("Class1Prob"); sw.Write("\t"); sw.Write("Class2Name"); sw.Write("\t"); sw.Write("Class2Prob"); sw.Write("\t"); sw.Write("Depth(M)"); sw.Write("\t"); sw.Write("PixelCount"); sw.Write("\t"); sw.Write("Height"); sw.Write("\t"); sw.Write("Width"); sw.Write("\t"); sw.Write("TopLeftRow"); sw.Write("\t"); sw.Write("TopLeftCol"); sw.Write("\t"); sw.Write("CtdDate"); sw.Write("\t"); sw.Write("Latitude"); sw.Write("\t"); sw.Write("Longitude"); sw.Write("\t"); sw.Write("Temperature(C)"); sw.WriteLine(); planktonData.Sort(PicesDataBaseImageList.SortOrderType.soSpatial, false); PicesInstrumentData id = null; uint nextScanLineThreshold = 0; String lastSipperFileName = ""; foreach (PicesDataBaseImage i in planktonData) { if ((i.TopLeftRow >= nextScanLineThreshold) || (i.SipperFileName != lastSipperFileName) ) { uint scanLineCleared = 0; uint scanLine = i.TopLeftRow; scanLine = 4096 * (uint)(scanLine / 4096); id = dbConn.InstrumentDataGetByScanLine(i.SipperFileName, scanLine); lastSipperFileName = i.SipperFileName; if (id == null) { scanLineCleared = scanLine; } else { scanLineCleared = id.ScanLine; if (scanLineCleared > scanLine) { if ((scanLineCleared - scanLine) > 4096) { id = null; } } } nextScanLineThreshold = scanLineCleared + 4096; } sw.Write(i.ImageFileName); sw.Write("\t"); sw.Write(i.Class1Name); sw.Write("\t"); sw.Write(i.Class1Prob.ToString("p")); sw.Write("\t"); sw.Write(i.Class2Name); sw.Write("\t"); sw.Write(i.Class2Prob.ToString("p")); sw.Write("\t"); sw.Write(i.Depth); sw.Write("\t"); sw.Write(i.PixelCount); sw.Write("\t"); sw.Write(i.Height); sw.Write("\t"); sw.Write(i.Width); sw.Write("\t"); sw.Write(i.TopLeftRow); sw.Write("\t"); sw.Write(i.TopLeftCol); if (id != null) { sw.Write("\t"); sw.Write(id.CtdDate.ToString("yyyy/MM/dd - HH:mm:ss")); sw.Write("\t"); sw.Write(id.Latitude); sw.Write("\t"); sw.Write(id.Longitude); sw.Write("\t"); sw.Write(id.Temperature); } sw.WriteLine(); ++imagesWritten; } sw.WriteLine("//All Data Written."); sw.Close(); }