Beispiel #1
0
        /// <summary>
        /// 读取命名的文件。第一行为头部描述,以下为以tab按键分割的文字,其中,头部含name的为名字,第一个含x的为x,依次为y,z。
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static List <NamedXyz> ReadNamedXyztxt(string path)
        {
            List <NamedXyz> listA = new List <NamedXyz>();

            using (StreamReader reader = new StreamReader(new FileStream(path, FileMode.Open)))
            {
                int    nameIndex = -1;
                int    xIndex    = -1;
                int    yIndex    = -1;
                int    zIndex    = -1;
                string line      = reader.ReadLine();
                //第一行为头部
                string[] titles = StringUtil.SplitByBlank(line);
                int      i      = 0;
                foreach (var item in titles)
                {
                    var title = item.ToLower();
                    if (title.Contains("name") && nameIndex == -1)
                    {
                        nameIndex = i;
                    }
                    else if (title.Contains("x") && xIndex == -1)
                    {
                        xIndex = i;
                    }
                    else if (title.Contains("y") && yIndex == -1)
                    {
                        yIndex = i;
                    }
                    else if (title.Contains("z") && zIndex == -1)
                    {
                        zIndex = i;
                    }

                    i++;
                }

                while ((line = reader.ReadLine()) != null)
                {
                    if (String.IsNullOrWhiteSpace(line))
                    {
                        continue;
                    }

                    string[] values = StringUtil.SplitByBlank(line);
                    NamedXyz xyz    = new NamedXyz()
                    {
                        Name  = values[nameIndex],
                        Value = new XYZ(
                            double.Parse(values[xIndex]),
                            double.Parse(values[yIndex]),
                            double.Parse(values[zIndex]))
                    };
                    listA.Add(xyz);
                }
                reader.Close();
            }
            return(listA);
        }
Beispiel #2
0
        /// <summary>
        /// 读取命名的文件。第一行为头部描述,以下为以tab按键分割的文字,其中,头部含name的为名字,第一个含x的为x,依次为y,z。
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static List <NamedXyz> ReadNamedXyz(string path)
        {
            List <NamedXyz> listA = new List <NamedXyz>();

            using (StreamReader reader = new StreamReader(new FileStream(path, FileMode.Open)))
            {
                int    nameIndex = -1;
                int    xIndex    = -1;
                int    yIndex    = -1;
                int    zIndex    = -1;
                string line      = reader.ReadLine();
                //第一行为头部
                string[] titles = StringUtil.SplitByTab(line);
                int      i      = 0;
                foreach (var item in titles)
                {
                    var title = item.ToLower();
                    if (title.Contains("name") && nameIndex == -1)
                    {
                        nameIndex = i;
                    }
                    else if (title.Contains("x") && xIndex == -1)
                    {
                        xIndex = i;
                    }
                    else if (title.Contains("y") && yIndex == -1)
                    {
                        yIndex = i;
                    }
                    else if (title.Contains("z") && zIndex == -1)
                    {
                        zIndex = i;
                    }
                    //逐历元比较,以历元为名称
                    else if (title.Contains("epoch") && nameIndex == -1)
                    {
                        nameIndex = i;
                    }

                    i++;
                }

                while ((line = reader.ReadLine()) != null)
                {
                    if (String.IsNullOrWhiteSpace(line))
                    {
                        continue;
                    }

                    string[] values = StringUtil.SplitByTab(line);

                    NamedXyz xyz = Parse(values, nameIndex, xIndex, yIndex, zIndex);
                    listA.Add(xyz);
                }
                return(listA);
            }
        }
Beispiel #3
0
        /// <summary>
        /// 比较
        /// </summary>
        /// <param name="site"></param>
        /// <returns></returns>
        public NamedXyz Compare(NamedXyz site)
        {
            NamedXyz namedXyz = new NamedXyz()
            {
                Name  = site.Name,
                Value = this.Value - site.Value
            };

            return(namedXyz);
        }
Beispiel #4
0
        public static List <NamedXyz> CompareWithListB(List <NamedXyz> listA, List <NamedXyz> listB)
        {
            List <NamedXyz> list = new List <NamedXyz>();

            foreach (var item in listA)
            {
                NamedXyz site = listB.Find(m => string.Equals(m.Name.Trim(), item.Name.Trim(), StringComparison.CurrentCultureIgnoreCase));
                if (site != null)
                {
                    list.Add((site));
                }
            }
            return(list);
        }
Beispiel #5
0
        /// <summary>
        /// 比较
        /// </summary>
        /// <param name="listA"></param>
        /// <param name="listB"></param>
        /// <returns></returns>
        public static List <NamedXyz> Compare(List <NamedXyz> listA, List <NamedXyz> listB, bool enableCutNameLen = false, int NameLen = 4)
        {
            List <NamedXyz> list = new List <NamedXyz>();

            foreach (var item in listA)
            {
                NamedXyz site = listB.Find(m => string.Equals(
                                               GetCuttedName(m.Name.Trim(), enableCutNameLen, NameLen)
                                               , GetCuttedName(item.Name.Trim(), enableCutNameLen, NameLen),
                                               StringComparison.CurrentCultureIgnoreCase));
                if (site != null)
                {
                    list.Add(item.Compare(site));
                }
            }
            return(list);
        }
Beispiel #6
0
        /// <summary>
        /// 解析
        /// </summary>
        /// <param name="values"></param>
        /// <param name="nameIndex"></param>
        /// <param name="xIndex"></param>
        /// <param name="yIndex"></param>
        /// <param name="zIndex"></param>
        /// <returns></returns>
        public static NamedXyz Parse(string[] values, int nameIndex = 0, int xIndex = 1, int yIndex = 2, int zIndex = 3)
        {
            var z = 0.0;

            if (zIndex != -1)
            {
                z = double.Parse(values[zIndex]);
            }
            NamedXyz xyz = new NamedXyz()
            {
                Name  = values[nameIndex],
                Value = new XYZ(
                    double.Parse(values[xIndex]),
                    double.Parse(values[yIndex]),
                    z)
            };

            return(xyz);
        }
Beispiel #7
0
        /// <summary>
        /// 解析一行
        /// </summary>
        /// <param name="line"></param>
        /// <param name="splitter"></param>
        /// <returns></returns>
        public static NamedXyz Parse(string line, char [] splitter = null)
        {
            if (splitter == null)
            {
                splitter = new char[] { ' ', ',', '\t' };
            }
            var values = line.Split(splitter, StringSplitOptions.RemoveEmptyEntries);

            if (values.Length >= 4)
            {
                return(Parse(values));
            }

            NamedXyz xyz = new NamedXyz()
            {
                Name  = "",
                Value = new XYZ(
                    double.Parse(values[0]),
                    double.Parse(values[1]),
                    double.Parse(values[2]))
            };

            return(xyz);
        }