Example #1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="konwnop">是否已知加密点物方坐标(用于评定精度)</param>
 /// <param name="copath">控制点物方坐标文件</param>
 /// <param name="cipath">控制点像方坐标文件</param>
 /// <param name="pipath">加密点像方坐标文件</param>
 /// <param name="overlap">像片重叠度</param>
 /// <param name="popath">加密点物方坐标文件(默认为空)</param>
 public DataHandle(bool konwnop, int overlap, string copath, string cipath, string pipath, string popath = null)
 {
     hasKnown     = konwnop;
     ControlOList = new List <OData>();
     ControlIList = new List <List <IData> >();
     PassIList    = new List <List <IData> >();
     PassIList    = new List <List <IData> >();
     #region 读取控制点物方坐标
     StreamReader sr = new StreamReader(copath, Encoding.Default);
     while (sr.Peek() != -1)
     {
         string s  = sr.ReadLine();
         var    ss = Regex.Split(s, " +|,");
         OData  od = new OData();
         od.Name  = ss[0];
         od.pos.X = Convert.ToDouble(ss[1]);
         od.pos.Y = Convert.ToDouble(ss[2]);
         od.pos.Z = Convert.ToDouble(ss[3]);
         ControlOList.Add(od);
     }
     sr.Close();
     #endregion
     #region 读取控制点像方坐标
     for (int i = 0; i < overlap; i++)
     {
         List <IData> id = new List <IData>();
         ControlIList.Add(id);
     }
     sr = new StreamReader(cipath);
     while (sr.Peek() != -1)
     {
         string s  = sr.ReadLine();
         var    ss = Regex.Split(s, " +|,");
         for (int i = 0, j = 1; i < overlap; j = j + 2, i++)
         {
             IData id = new IData();
             id.Name  = ss[0];
             id.pos.X = Convert.ToDouble(ss[j]);
             id.pos.Y = Convert.ToDouble(ss[j + 1]);
             ControlIList[i].Add(id);
         }
     }
     sr.Close();
     #endregion
     #region 读取加密点像方坐标
     for (int i = 0; i < overlap; i++)
     {
         List <IData> id = new List <IData>();
         PassIList.Add(id);
     }
     sr = new StreamReader(pipath);
     while (sr.Peek() != -1)
     {
         string s  = sr.ReadLine();
         var    ss = Regex.Split(s, " +|,");
         for (int i = 0, j = 1; i < overlap; j = j + 2, i++)
         {
             IData id = new IData();
             id.Name  = ss[0];
             id.pos.X = Convert.ToDouble(ss[j]);
             id.pos.Y = Convert.ToDouble(ss[j + 1]);
             PassIList[i].Add(id);
         }
     }
     sr.Close();
     #endregion
     if (konwnop)
     {
         KnownOList = new List <OData>();
         #region 读取加密点物方坐标
         sr = new StreamReader(popath, Encoding.Default);
         while (sr.Peek() != -1)
         {
             string s  = sr.ReadLine();
             var    ss = Regex.Split(s, " +|,");
             OData  od = new OData();
             od.Name  = ss[0];
             od.pos.X = Convert.ToDouble(ss[1]);
             od.pos.Y = Convert.ToDouble(ss[2]);
             od.pos.Z = Convert.ToDouble(ss[3]);
             KnownOList.Add(od);
         }
         sr.Close();
         #endregion
     }
     cpointsCount = MatchCPoints();
 }
Example #2
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="knownop">是否已知加密点物方坐标(用于评定精度)</param>
 /// <param name="copath">控制点物方坐标文件</param>
 /// <param name="cipath">控制点像方坐标文件</param>
 /// <param name="pipath">加密点像方坐标文件</param>
 /// <param name="overlap">像片重叠度</param>
 /// <param name="popath">加密点物方坐标文件(默认为空)</param>
 public DataHandle4(bool knownop, int overlap, string copath, string cipath, string pipath, string popath = null)
 {
     hasKnown = knownop;
     ControlOList = new List<OData>();
     ControlIList = new List<List<IData>>();
     PassIList = new List<List<IData>>();
     PassIList = new List<List<IData>>();
     #region 读取控制点物方坐标
     StreamReader sr = new StreamReader(copath, Encoding.Default);
     while (sr.Peek() != -1)
     {
         string s = sr.ReadLine();
         var ss = Regex.Split(s, " +|,");
         OData od = new OData();
         od.Name = ss[0];
         od.pos.X = Convert.ToDouble(ss[1]);
         od.pos.Y = Convert.ToDouble(ss[2]);
         od.pos.Z = Convert.ToDouble(ss[3]);
         ControlOList.Add(od);
     }
     sr.Close();
     #endregion
     #region 读取控制点像方坐标
     for (int i = 0; i < overlap; i++)
     {
         List<IData> id = new List<IData>();
         ControlIList.Add(id);
     }
     sr = new StreamReader(cipath);
     while (sr.Peek() != -1)
     {
         string s = sr.ReadLine();
         var ss = Regex.Split(s, " +|,");
         for (int i = 0, j = 1; i < overlap; j = j + 2, i++)
         {
             IData id = new IData();
             id.Name = ss[0];
             id.pos.X = Convert.ToDouble(ss[j]);
             id.pos.Y = Convert.ToDouble(ss[j + 1]);
             ControlIList[i].Add(id);
         }
     }
     sr.Close();
     #endregion
     #region 读取加密点像方坐标
     for (int i = 0; i < overlap; i++)
     {
         List<IData> id = new List<IData>();
         PassIList.Add(id);
     }
     sr = new StreamReader(pipath);
     while (sr.Peek() != -1)
     {
         string s = sr.ReadLine();
         var ss = Regex.Split(s, " +|,");
         for (int i = 0, j = 1; i < overlap; j = j + 2, i++)
         {
             IData id = new IData();
             id.Name = ss[0];
             id.pos.X = Convert.ToDouble(ss[j]);
             id.pos.Y = Convert.ToDouble(ss[j + 1]);
             PassIList[i].Add(id);
         }
     }
     sr.Close();
     #endregion
     if (knownop)
     {
         KnownOList = new List<OData>();
         #region 读取加密点物方坐标
         sr = new StreamReader(popath, Encoding.Default);
         while (sr.Peek() != -1)
         {
             string s = sr.ReadLine();
             var ss = Regex.Split(s, " +|,");
             OData od = new OData();
             od.Name = ss[0];
             od.pos.X = Convert.ToDouble(ss[1]);
             od.pos.Y = Convert.ToDouble(ss[2]);
             od.pos.Z = Convert.ToDouble(ss[3]);
             KnownOList.Add(od);
         }
         sr.Close();
         #endregion
     }
     cpointsCount = MatchCPoints();
 }