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