当前位置: 首页 > news >正文

网站备案专员外贸网站外包

网站备案专员,外贸网站外包,合肥建站费用,郑州做网站哪里便宜C# List 列表综合运用实例⁓Hypak原始数据处理编程小结 1、一个数组解决很麻烦引出的问题1.1、RAW 文件尾部数据如下:1.2、自定义标头 ADD 或 DEL 的数据结构如下#xff1a; 2、程序 C# 源代码的编写和剖析2.1、使用 ref 关键字#xff0c;通过引用将参数传递#xff0c;以… C# List 列表综合运用实例⁓Hypak原始数据处理编程小结 1、一个数组解决很麻烦引出的问题1.1、RAW 文件尾部数据如下:1.2、自定义标头 ADD 或 DEL 的数据结构如下 2、程序 C# 源代码的编写和剖析2.1、使用 ref 关键字通过引用将参数传递以返回需要的数据行 Liststring2.2、使用 return 关键字采用函数返回需要的数据行 Liststring3、程序过程编程小结 1、一个数组解决很麻烦引出的问题 春节期间单身程序猿在家咸的无聊折腾编了很久的程序一个 Hypack 测量成果 RAW 文件的处理程序其中关于手工鼠标添加和删除打标记录遇到一个数组解决很麻烦的问题选择部分RAW 文件尾部作为示例。 1.1、RAW 文件尾部数据如下: FIX 99 37639.880 115 626269.893 3216969.963 EC1 1 37640.137 1.560 POS 0 37640.200 626269.880 3216970.131 QUA 0 37640.200 7 3.000 1.000 9.000 2.000 0.000 0.000 0.000 RAW 0 37640.200 4 290379.29870 1121779.71130 9.88800 22720.20000 MSG 0 37640.137 $GPGGA,022720.20,2903.792987,N,11217.797113,E,2,09,1.0,9.888,M,0.0,M,8.0,0643*7A MSG 0 37640.179 $GPVTG,355.0,T,,M,0.97,N,1.80,K,P*18 MSG 0 37640.199 $GPZDA,022720.20,27,03,2024,00,00*63 ...... ...... EC1 1 37641.138 1.320 POS 0 37641.200 626269.879 3216970.530 QUA 0 37641.200 7 3.000 1.000 8.000 2.000 0.000 0.000 0.000 RAW 0 37641.200 4 290379.32030 1121779.71150 9.92700 22721.20000 MSG 0 37641.138 $GPGGA,022721.20,2903.793203,N,11217.797115,E,2,08,1.0,9.927,M,0.0,M,4.0,0643*72 MSG 0 37641.181 $GPVTG,9.1,T,,M,0.68,N,1.26,K,P*1F MSG 0 37641.199 $GPZDA,022721.20,27,03,2024,00,00*62 FIX 99 37641.316 116 626269.879 3216970.530固定了 SP-6050 GPS 和 HY1603 测深仪的测量船在航行中测量时Hypack 软件产生原始成果 RAW 文件其尾部数据与上雷同。 RAW 文件数据说明 FIX 标识是某一时刻 Hypack 利用 HY1603 测深仪进行水下地形测量记录的固定打标点数据 EC1 标识是某一时刻测量记录的水深数据 POS 标识是某一时刻测量记录的 GPS 平面坐标数据 QUA 标识是某一时刻测量记录的 GPS 坐标数据质量与精度 RAW 标识是某一时刻测量记录的 GPS 坐标 WGS84 原始数据 MSG 标识是某一时刻测量记录的 GPS 输出的各类原始消息如 GPGGA、GPVTG、GPZDA 在测量过程中受地形变化FIX 固定打标点数据不能控制地形图的精度需要手动添加地形变化显著的突出测量点或删除多余的平坦测量点这些工作可以通过自编程序进行处理和计算通过自编程序向原始成果 RAW 文件尾部加入自定义标头为 ADD 或 DEL 的数据以指示需要添加或删除某一时刻的 FIX 固定打标点数据。 1.2、自定义标头 ADD 或 DEL 的数据结构如下 ADD FIX 37530.812 117 626281.983 3216777.812 DEL FIX 37616.237 110 DEL FIX 37539.000 80 DEL FIX 37530.812 117 DEL FIX 37530.812 117 Add 118 38203.57 11.75 Add 129 38260.5 5.35 Add 129 38260.5 5.35 Add 130 38247.56 10.59 Del 130 38247.56 10.59 Del 129 38260.5 5.35 Del 129 38260.5 5.35 Del 117 37530.812 6.88以上数据以空格分隔以分隔表示一行数据的列定义。 以上数据中全大写字母 ADD 或 DEL 是新的定义格式按固定打标 FIX 标识的新规范制定 以上数据存在新旧标识数据以便程序兼容旧标识数据能识别和处理旧标识数据。 Add 或 Del 是旧的定义格式按固定打标 FIX 标识的旧规范制定。 ADD 新定义格式标头固定时间事件号东坐标北坐标 DEL 新定义格式标头固定时间事件号 Add 旧定义格式标头事件号时间水深 Del 旧定义格式 标头事件号时间水深 以上数据有意添加了重复的数据行是因为程序处理中。或可能产生此类数据。需要在新程序中更新该类错误。 产生此类数据的原则和前提 1、添加 ADD 和删除 DEL 数据行第 3 列和第 4 列不能相同不可重复即添加和删除了同一个数据点应该抵消无需存在。 如下数据不应该出现在以上 1.2 节示例数据中 Add 130 38247.56 10.59 Del 130 38247.56 10.592、相同标识的数据行第 3 列和第 4 列相同的只能存在一个添加 ADD 和删除 DEL 标识的唯一性。 如下数据第二行和第三行不重复是正确的可以追加写入到原始成果 RAW 文件尾部 ADD FIX 38203.570 118 DEL FIX 37539.000 80 DEL FIX 37616.237 1103、为了向下兼容新和旧定义格式混合时相同标识的数据行时间和事件相同的不应该存在。 DEL FIX 37530.812 117 Del 117 37530.812 6.882、程序 C# 源代码的编写和剖析 2.1、使用 ref 关键字通过引用将参数传递以返回需要的数据行 List 采用方法过程void 关键字返回类型指定该方法不返回值采用 ref 关键字参数传递数据。 完整处理和分析过程如下 /// summary删除重复重建添加删除打标记录/summary/// param nameListAddOrDelMarks返回符合自定义规范的 List数据列/paramprivate void RebuildDuplicateMarkings(ref Liststring ListAddOrDelMarks)//放入其它类使用 public static 替代 private {if (ListAddOrDelMarks.Count 1)//有2行数据才进行处理{ListAddOrDelMarks ListAddOrDelMarks.Distinct().ToList();//返回非重复的数列,删除相同的ADD或DEL行// foreach (string ListRow in ListAddOrDelMarksRows){Console.WriteLine(String.Join(, , ListRow));}Console.WriteLine();for (int i 0; i ListAddOrDelMarks.Count; i)//转换 Add 和 Del 行到新标准格式DEL FIX 37616.237 110和ADD FIX 37530.812 117{string ListRowData ListAddOrDelMarks[i];if (ListRowData.Substring(0, 3) Del){string[] SplitListRow ListRowData.Split( );ListAddOrDelMarks[i] $DEL FIX {Convert.ToDouble(SplitListRow[2]).ToString(0.000)} {SplitListRow[1]};//Console.WriteLine($DEL FIX {SplitListRow[2]} {SplitListRow[1]});}else if (ListRowData.Substring(0, 3) Add){string[] SplitListRow ListRowData.Split( );ListAddOrDelMarks[i] $ADD FIX {Convert.ToDouble(SplitListRow[2]).ToString(0.000)} {SplitListRow[1]};//Console.WriteLine($ADD FIX {SplitListRow[2]} {SplitListRow[1]});}}ListAddOrDelMarks.Sort();//LIST排序//foreach (string ListRow in ListAddOrDelMarksRows) { Console.WriteLine(ListRow); } Console.WriteLine();ListListstring TwoDimensionalList new ListListstring();//新建二维LIST 以处理其它去重复foreach (string ListRowData in ListAddOrDelMarks){Liststring OneDimensionalList new Liststring(ListRowData.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries));//行数据分裂为LISTstringTwoDimensionalList.Add(OneDimensionalList);//将一维 LIST 添加到二维 LIST}int columnIndex 2;// 检查第3列索引从0开始Liststring duplicates TwoDimensionalList.GroupBy(list list[columnIndex])// 获取该列的所有值及其出现的次数.Where(group group.Count() 1).Select(group group.Key).ToList();TwoDimensionalList.RemoveAll(list duplicates.Contains(list[columnIndex]));// 移除TwoDimensionalList二维LIST所有第3列包含重复值的行Liststring NewListAddOrDelMarksRows new Liststring();//新建一维列表 Listforeach (Liststring ListRow in TwoDimensionalList){NewListAddOrDelMarksRows.Add(String.Join( , ListRow));//二维 List 转换为一维列表 List // Console.WriteLine(String.Join( , ListRow));}ListAddOrDelMarks NewListAddOrDelMarksRows;//返回符合规则的数列NewListAddOrDelMarksRows.Clear();//删除使用过的数列释放内存占用duplicates.Clear();TwoDimensionalList.Clear();}} 2.2、使用 return 关键字采用函数返回需要的数据行 List 采用函数返回值可以封装到引用类中以方便引用。 完整处理和分析过程如下 /// summary删除重复重建添加删除打标记录/summary/// param nameListAddOrDelMarks添加或删除的重复打标记录/param/// returns返回符合自定义规范的 List数据列/returnspublic static Liststring RebuildDuplicateMarkings(Liststring ListAddOrDelMarks){if (ListAddOrDelMarks.Count 1){ListAddOrDelMarks ListAddOrDelMarks.Distinct().ToList();//返回非重复的数列,删除相同的ADD或DELfor (int i 0; i ListAddOrDelMarks.Count; i)//转换Add和Del行为标准格式DEL FIX 37616.237 110和ADD FIX 37530.812 117{string ListRowData ListAddOrDelMarks[i];if (ListRowData.Substring(0, 3) Del){string[] SplitListRow ListRowData.Split( );ListAddOrDelMarks[i] $DEL FIX {Convert.ToDouble(SplitListRow[2]).ToString(0.000)} {SplitListRow[1]};}else if (ListRowData.Substring(0, 3) Add){string[] SplitListRow ListRowData.Split( );ListAddOrDelMarks[i] $ADD FIX {Convert.ToDouble(SplitListRow[2]).ToString(0.000)} {SplitListRow[1]};}}ListAddOrDelMarks.Sort();//LIST排序ListListstring TwoDimensionalList new ListListstring();//新建二维LISTforeach (string ListRowData in ListAddOrDelMarks){Liststring OneDimensionalList new Liststring(ListRowData.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries));//行数据分裂为LISTTwoDimensionalList.Add(OneDimensionalList);//将一维LIST添加到二维LIST}int columnIndex 2;// 检查第3列时间值索引从0开始Liststring duplicates TwoDimensionalList.GroupBy(list list[columnIndex])// 获取该列的所有值及其出现的次数.Where(group group.Count() 1).Select(group group.Key).ToList();TwoDimensionalList.RemoveAll(list duplicates.Contains(list[columnIndex]));// 移除TwoDimensionalList二维LIST所有3列包含重复值的行Liststring NewListAddOrDelMarksRows new Liststring(); //新建一维LIST将二维LIST转换为一维LISTforeach (Liststring ListRow in TwoDimensionalList){NewListAddOrDelMarksRows.Add(String.Join( , ListRow));}duplicates.Clear();TwoDimensionalList.Clear();return NewListAddOrDelMarksRows;//返回一维LIST}else{return null; //返回空}} 3、程序过程编程小结 通过以上程序处理1.2 节的示例数据输出结构如下 ADD FIX 38203.570 118 DEL FIX 37539.000 80 DEL FIX 37616.237 110返回的 List 数据符合自定义要求程序设计思路更加清晰解决了数组很难处理的麻烦而且程序代码行数量不大代码简洁运行速度提升。 处理了不符合定义要求的重复数据行通过鼠标左右双击添加 ADD 和删除 DEL 固定打标点的程序代码就不会出错了就加快了编写和优化 FIX 固定打标点数据的图形展示、数据表显示的进度。
http://www.hkea.cn/news/14306055/

相关文章:

  • 做网站的软件叫什么wordpress媒体库缩略图不现实
  • 黄岛网站建设公司外贸怎么做
  • 大型网站后台登录地址一般是如何设置的app制作软件公司
  • 注册公司做网站中山网站推广外包
  • 北京网页制作网站网站应该怎么做运维
  • 烦恼可以做网站吗怎么创建一个软件平台
  • 在线做编程题的网站开发网站网页归档
  • 网站建设编程软件32强世界排名
  • 做网站客户需要提供的资料现在建个企业网站要多少钱
  • 网站密码管理制度长沙网络营销外包
  • 企业做企业网站的好处百度地图收录提交入口
  • 东莞网站建设 汇卓网站建设对公司有什么好处
  • 北京 网站 外包免费空间做淘宝客网站
  • 建网站要什么工做人员始兴县建设局网站
  • 网站建设计划书内容繁体中文网站 怎么做
  • 海南网站建设粤icp备校园网站模版
  • 南宁网站建设公司怎么接单网络营销概述
  • 广州骏域网站建设专家 V国外财经网站是怎么做的
  • vps建站教程小学培训机构
  • 网站专题页优化vi设计公司 北京
  • 个人注册的网站可以做公司宣传用吗拌合站建站方案
  • 游戏工作室网站模板网站html地图导航代码大全
  • muse网站设计解决方案视频教程学编程官网
  • 凡科网站怎么建设个人网站台州网站策划
  • 自己做的网站别人中国临沂网站优化
  • android高级开发网站如何做seo优化
  • 丰台广州网站建设南昌专业制作网站
  • 网站搭建软件关键词seo培训
  • 湖南平台网站建设哪里好网站开发图
  • 未备案网站 赚钱免费一级域名注册教程