Beispiel #1
0
 private void printSampleData(StreamWriter f, Stats s, string percentile, string limitStr, double exclude, string reportType, string unit)
 {
     if (f != null)
     {
         int index = 0;
         string[] strArray = percentile.Split(new char[] { ',' });
         string[] strArray2 = limitStr.Split(new char[] { ',' });
         this.percentileList = new List<double>();
         foreach (string str in strArray)
         {
             double p = Convert.ToDouble(str);
             double item = s.GetPercentile(p, exclude);
             if (strArray2.Length >= strArray.Length)
             {
                 this.percentileList.Add(item);
                 f.WriteLine("\t\t\t\t<field name=\"{0:F1}% {1}\" value=\"{2:F2}\" criteria=\"{3:F2}\" direction=\"&lt;\" units=\"{4}\"/>", new object[] { p, reportType, item, strArray2[index], unit });
             }
             else
             {
                 this.percentileList.Add(item);
                 f.WriteLine("\t\t\t\t<field name=\"{0:F1}% {1}\" value=\"{2:F2}\" criteria=\"\" direction=\"\" units=\"{3}\"/>", new object[] { p, reportType, item, unit });
             }
             index++;
         }
         double num4 = s.Stats_Max(exclude);
         f.WriteLine("\t\t\t\t<field name=\"Max {0}\" value=\"{1:F2}\" criteria=\"\" direction=\"\" units=\"{2}\"/>", reportType, num4, unit);
     }
 }
Beispiel #2
0
 public void PointToPointErrorCalculation(string dataFile, string refFile, double startPoint, double endPoint)
 {
     ArrayList list = this._helperFunctions.ReadIMUFile(dataFile, startPoint, endPoint);
     ArrayList list2 = this._helperFunctions.ReadIMUFile(refFile, startPoint, endPoint);
     Stats stats = new Stats();
     Stats stats2 = new Stats();
     Stats stats3 = new Stats();
     Stats stats4 = new Stats();
     Stats stats5 = new Stats();
     Stats stats6 = new Stats();
     Stats stats7 = new Stats();
     Stats stats8 = new Stats();
     PositionErrorCalc calc = new PositionErrorCalc();
     List<string> list3 = new List<string>();
     string item = string.Empty;
     List<double> positionDataList = new List<double>(8);
     for (int i = 0; i < 8; i++)
     {
         positionDataList.Add(0.0);
     }
     PositionInfo.PositionStruct struct2 = new PositionInfo.PositionStruct();
     PositionInfo.PositionStruct struct3 = new PositionInfo.PositionStruct();
     int num2 = 0;
     int num3 = 0;
     double tOW = 0.0;
     double num5 = 0.0;
     double sample = 0.0;
     double num7 = 0.0;
     double num8 = 0.0;
     double num9 = 0.0;
     double num10 = 0.0;
     double num11 = 0.0;
     double num12 = 0.0;
     int num13 = 0;
     int num14 = 0;
     int num15 = 0;
     int num16 = 0;
     int num17 = 0;
     int num18 = 0;
     int num19 = 0;
     int num20 = 0;
     int num21 = 0;
     string str2 = "Not detected";
     if ((list.Count > 0) && (list2.Count > 0))
     {
         for (num2 = 0; (num2 < list.Count) && (num3 < list2.Count); num2++)
         {
             struct2 = (PositionInfo.PositionStruct) list[num2];
             struct3 = (PositionInfo.PositionStruct) list2[num3];
             if (struct2.SW_Version != string.Empty)
             {
                 str2 = struct2.SW_Version.TrimStart(new char[] { ':' });
             }
             if (struct2.NavType > 0)
             {
                 tOW = struct2.TOW;
                 num5 = struct3.TOW;
                 while (tOW > num5)
                 {
                     num3++;
                     if (num3 >= list2.Count)
                     {
                         break;
                     }
                     struct3 = (PositionInfo.PositionStruct) list2[num3];
                     num5 = struct3.TOW;
                 }
                 if (num8 == 0.0)
                 {
                     num8 = tOW;
                 }
                 num9 = tOW;
                 if (tOW == num5)
                 {
                     positionDataList[0] = struct2.Latitude;
                     positionDataList[1] = struct2.Longitude;
                     positionDataList[2] = struct2.Altitude;
                     positionDataList[3] = struct2.Heading;
                     positionDataList[4] = struct3.Latitude;
                     positionDataList[5] = struct3.Longitude;
                     positionDataList[6] = struct3.Altitude;
                     positionDataList[7] = struct3.Heading;
                     calc.GetPositionErrorsInMeter(positionDataList);
                     sample = calc.HorizontalError;
                     stats.InsertSample(sample);
                     num7 = Math.Abs(calc.VerticalErrorInMeter);
                     stats2.InsertSample(num7);
                     num11 = Math.Abs(calc.AlongTrackErrorInMeter);
                     stats7.InsertSample(num11);
                     num12 = Math.Abs(calc.XTrackErrorInMeter);
                     stats8.InsertSample(num12);
                     num10 = Math.Abs((double) (struct2.Heading - struct3.Heading));
                     if (num10 > 180.0)
                     {
                         num10 = 360.0 - num10;
                     }
                     stats6.InsertSample(num10);
                     stats3.InsertSample(struct2.HDOP);
                     stats4.InsertSample((double) struct2.NumSVInFix);
                     stats5.InsertSample(struct2.MaxCN0);
                     if (sample > 50.0)
                     {
                         num13++;
                         num19++;
                         if (num13 == 4)
                         {
                             num16++;
                         }
                     }
                     else
                     {
                         num13 = 0;
                     }
                     if (sample > 25.0)
                     {
                         num14++;
                         num20++;
                         if (num14 == 4)
                         {
                             num17++;
                         }
                     }
                     else
                     {
                         num14 = 0;
                     }
                     if (sample > 10.0)
                     {
                         num15++;
                         num21++;
                         if (num15 == 4)
                         {
                             num18++;
                         }
                     }
                     else
                     {
                         num15 = 0;
                     }
                     item = string.Format("{0},{1}, {2:F6},{3:F6},{4:F6},{5:F6},{6:F6},{7:F6},{8:F6}, {9:F6}, {10:F2}, {11:F2}, {12:F2}, {13:F2},{14:F2},{15:F2},{16},{17},{18},{19},{20},{21},{22},{23},{24},{25}, {26},{27}", new object[] {
                         tOW, num5, struct2.Latitude, struct2.Longitude, struct2.Altitude, struct3.Latitude, struct3.Longitude, struct3.Altitude, struct2.Heading, struct3.Heading, sample, num7, num12, num11, struct2.HDOP, struct2.NumSVInFix,
                         struct2.MaxCN0, struct2.NavType, num19, num16, num20, num17, num21, num18, num13, num14, num15, num10
                      });
                     list3.Add(item);
                     num3++;
                 }
             }
         }
         if (stats.Samples > 0)
         {
             double percentile = stats.GetPercentile((double) 50.0, -9999.0);
             double num23 = stats.GetPercentile((double) 68.0, -9999.0);
             double num24 = stats.GetPercentile((double) 95.0, -9999.0);
             double num25 = stats.Stats_Max((double) -9999.0);
             stats.Stats_Min((double) -9999.0);
             stats.Stats_Mean((double) -9999.0);
             double num26 = stats2.GetPercentile((double) 50.0, -9999.0);
             double num27 = stats2.GetPercentile((double) 68.0, -9999.0);
             double num28 = stats2.GetPercentile((double) 95.0, -9999.0);
             double num29 = stats2.Stats_Max((double) -9999.0);
             stats2.Stats_Min((double) -9999.0);
             stats2.Stats_Mean((double) -9999.0);
             double num30 = stats8.GetPercentile((double) 50.0, -9999.0);
             double num31 = stats8.GetPercentile((double) 68.0, -9999.0);
             double num32 = stats8.GetPercentile((double) 95.0, -9999.0);
             double num33 = stats8.Stats_Max((double) -9999.0);
             stats8.Stats_Min((double) -9999.0);
             stats8.Stats_Mean((double) -9999.0);
             double num34 = stats7.GetPercentile((double) 50.0, -9999.0);
             double num35 = stats7.GetPercentile((double) 68.0, -9999.0);
             double num36 = stats7.GetPercentile((double) 95.0, -9999.0);
             double num37 = stats7.Stats_Max((double) -9999.0);
             stats7.Stats_Min((double) -9999.0);
             stats7.Stats_Mean((double) -9999.0);
             int samples = stats.Samples;
             double num39 = stats3.Stats_Mean((double) -9999.0);
             double num40 = stats4.Stats_Mean((double) -9999.0);
             double num41 = (((double) samples) / ((num9 - num8) + 1.0)) * 100.0;
             double num42 = stats5.Stats_Mean((double) -9999.0);
             double num43 = stats6.Stats_Max((double) -9999.0);
             stats6.Stats_Min((double) -9999.0);
             stats6.Stats_Mean((double) -9999.0);
             double num44 = stats6.GetPercentile((double) 50.0, -9999.0);
             double num45 = stats6.GetPercentile((double) 68.0, -9999.0);
             double num46 = stats6.GetPercentile((double) 95.0, -9999.0);
             string path = dataFile.Replace(".gps", "_PointToPointAccuracy.csv");
             FileInfo info = new FileInfo(dataFile);
             StreamWriter writer = new StreamWriter(path);
             FileInfo info2 = new FileInfo(refFile);
             writer.WriteLine("IMU file path= {0}", info2.Name);
             writer.WriteLine("Data file path= {0}", info.Name);
             writer.WriteLine("SW Version= {0}", str2);
             writer.WriteLine("MaxCN0 Ave|dBHz= {0:F1}", num42);
             writer.WriteLine("Samples= {0:}", samples);
             writer.WriteLine("Tracking Availability= {0:F1}%", num41);
             writer.WriteLine("HDOP Ave= {0:F1}", num39);
             writer.WriteLine("Satellite Number Ave= {0:F1}", num40);
             writer.WriteLine("Horizontal Error 50% CEP|m= {0:F1}", percentile);
             writer.WriteLine("Horizontal Error 68% CEP|m= {0:F1}", num23);
             writer.WriteLine("Horizontal Error 95% CEP|m= {0:F1}", num24);
             writer.WriteLine("Horizontal Error Max|m= {0:F1}", num25);
             writer.WriteLine("Altitude Error 50% CEP|m= {0:F1}", num26);
             writer.WriteLine("Altitude Error 68% CEP|m= {0:F1}", num27);
             writer.WriteLine("Altitude Error 95% CEP|m= {0:F1}", num28);
             writer.WriteLine("Altitude Error Max|m= {0:F1}", num29);
             writer.WriteLine("Cross Track Error 50% CEP|m= {0:F1}", num30);
             writer.WriteLine("Cross Track Error 68% CEP|m= {0:F1}", num31);
             writer.WriteLine("Cross Track Error 95% CEP|m= {0:F1}", num32);
             writer.WriteLine("Cross Track Error Max|m= {0:F1}", num33);
             writer.WriteLine("Along Track Error 50% CEP|m= {0:F1}", num34);
             writer.WriteLine("Along Track Error 68% CEP|m= {0:F1}", num35);
             writer.WriteLine("Along Track Error 95% CEP|m= {0:F1}", num36);
             writer.WriteLine("Along Track Error Max|m= {0:F1}", num37);
             writer.WriteLine("Exceed50mCount= {0}", num19);
             writer.WriteLine("Exceed50m3sNotPullInCount= {0}", num16);
             writer.WriteLine("Exceed25mCount= {0}", num20);
             writer.WriteLine("Exceed25m3sNotPullInCount= {0}", num17);
             writer.WriteLine("Exceed10mCount= {0}", num21);
             writer.WriteLine("Exceed10m3sNotPullInCount= {0}", num18);
             writer.WriteLine("Heading Error 50% CEP|m= {0:F1}", num44);
             writer.WriteLine("Heading Error 68% CEP|m= {0:F1}", num45);
             writer.WriteLine("Heading Error 95% CEP|m= {0:F1}", num46);
             writer.WriteLine("Heading Error Max|m= {0:F1}", num43);
             writer.WriteLine("End Summary");
             writer.WriteLine("Tow,RefTow,Latitude,Longitude,Altitude,RefLatitude,RefLongitude,RefAltitude,Heading,RefHeading,HzError,AltError,CrossTrackError,AlongTrackError,HDOP,NumSVInFix,MaxCN0,NavType,Exceed50mCount,Exceed50m3sNotPullInCount,Exceed25mCount,Exceed25m3sNotPullInCount,Exceed10mCount,Exceed10m3sNotPullInCount,PullInTime50m,PullInTime25m,ullInTime10m,headingError");
             foreach (string str4 in list3)
             {
                 writer.WriteLine(str4);
             }
             writer.Close();
         }
         list.Clear();
         list2.Clear();
     }
     stats.Dispose();
     stats = null;
     stats2.Dispose();
     stats2 = null;
     stats3.Dispose();
     stats3 = null;
     stats4.Dispose();
     stats4 = null;
     stats5.Dispose();
     stats5 = null;
     stats8.Dispose();
     stats8 = null;
     stats7.Dispose();
     stats7 = null;
     stats6.Dispose();
     stats6 = null;
     calc = null;
     list3.Clear();
     list3 = null;
 }