基本信息
源码名称:TCP文件合并
源码大小:0.45M
文件格式:.zip
开发语言:C#
更新时间:2015-07-22
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

无人机影像处理TCP合并

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Tpc文件合并
{
    public static class MergeTools
    {
        public static List<TpcDataStruct> ReadTpcFiles(string tpcPath)
        {
            List<TpcDataStruct> tpcData = new List<TpcDataStruct>();
            StreamReader sr = new StreamReader(tpcPath);
            List<ImgPoints> ips = new List<ImgPoints>();
            TpcDataStruct tpc = new TpcDataStruct();
            while (!sr.EndOfStream)
            {
                string[] data = sr.ReadLine().Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries);
                switch (data.Length)
                {
                    case 1:
                        tpc.PointsNum = int.Parse(data[0]);
                        //tpcData.Add(tpc);
                        if (data[0] == "0")
                        {                          
                            continue;
                        }
                        break;
                    case 2:
                        if (tpc.AirLineIndex != 0)
                        {
                            tpc.ImagesPoints = ips;
                            tpcData.Add(tpc);
                        }
                        tpc = new TpcDataStruct();
                        ips = new List<ImgPoints>();
                        tpc.AirLineIndex = int.Parse(data[0]);
                        tpc.ImageIndex = int.Parse(data[1]);
                        break;
                    case 6:
                        ImgPoints ip = new ImgPoints(int.Parse(data[0]), double.Parse(data[1]), double.Parse(data[2]), double.Parse(data[3]), double.Parse(data[4]));
                        ips.Add(ip);                        
                        break;
                    default:
                        break;
                }
            }
            tpc.ImagesPoints = ips;
            tpcData.Add(tpc);
            sr.Close();
            return tpcData;
        }

        public static List<TpcDataStruct> MergeTpc(List<TpcDataStruct> tpc1, List<TpcDataStruct> tpc2)
        {
            List<TpcDataStruct> mergeTpc = new List<TpcDataStruct>();
            tpc1.ForEach(tpc =>
                {
                    TpcDataStruct singleTpc = new TpcDataStruct();
                    singleTpc.AirLineIndex = tpc.AirLineIndex;
                    singleTpc.ImageIndex = tpc.ImageIndex;
                    singleTpc.ImagesPoints.AddRange(tpc.ImagesPoints);
                    foreach (var t in tpc2)
                    {
                        if (tpc.AirLineIndex == t.AirLineIndex && tpc.ImageIndex == t.ImageIndex)
                        {
                            singleTpc.ImagesPoints.AddRange(t.ImagesPoints);
                            singleTpc.PointsNum = singleTpc.ImagesPoints.Count;
                        }
                    }
                    mergeTpc.Add(singleTpc);
                });
            //tpc2.ForEach(tpc =>
            //    {
            //        bool isExist = false;
            //        foreach (var t in tpc1)
            //        {
            //            if (tpc.AirLineIndex == t.AirLineIndex && tpc.ImageIndex == t.ImageIndex)
            //                isExist = true;
            //        }
            //        if (!isExist)
            //        {
            //            mergeTpc.Add(tpc);
            //        }
            //    });
            return mergeTpc;
        }

        public static void WriteTpc(List<TpcDataStruct> tpcs,string tpcPath)
        {
            StreamWriter sw = new StreamWriter(tpcPath, false, Encoding.Default);
            tpcs.ForEach(tpc =>
            {
                sw.WriteLine("   "   tpc.AirLineIndex.ToString()   " \t\t\t"   tpc.ImageIndex.ToString());
                sw.WriteLine("   "   tpc.PointsNum.ToString());
                tpc.ImagesPoints.ForEach(p=>
                    {
                        sw.WriteLine("   "   p.PointsID.ToString().ToFormat()   "  \t\t"   p.ParaA.ToString("f5").ToFormat()   "  \t\t"   p.ParaB.ToString("f5").ToFormat()  
                            "  \t\t"   p.ParaC.ToString("f4").ToFormat()   "  \t\t"   p.ParaD.ToString("f4").ToFormat()   "  \t\t"   p.Flag.ToString());
                    });
            });
            sw.Close();
        }

        public static string ToFormat(this string str)
        {
            string s = string.Format("{0,11}", str);
            return s;
        }
    }
}