首页 > 代码库 > 坐标格式提取转换的两种方法C#、Excel
坐标格式提取转换的两种方法C#、Excel
一、引言
受朋友之托,处理一份点云数据,格式:“X[m] Y[m] Z[m] R[dB] G[dB] B[dB]”,总共63w个点,转换成的格式是:“点名,,X[m], Y[m], Z[m]”。如果经常有坐标文件转换就使用代码方法,偶尔使用的话就使用Excel。用Excel的话,直接把后缀名改成.xlsx,接下来就是对整列进行插入、更改等事情了,最后另存为txt格式或者dat格式。
二、知识准备
1、文件读写
2、字符串处理
三、需要注意的地方
1、60几万个点,数据量还行,所以思路和数据结构要格外注意,能省则省。鄙人昨天走了弯路,拿19万个点测试时候花了0.75秒有点沾沾自喜,今天重新到回去看,写的什么玩意儿,把代码重新修改了一下,测试显示,19万个点0.45秒左右,63万个点1.15秒左右。
2、文件读写要注意文件流的打开与关闭。
四、代码
using System;using System.Collections.Generic;using System.Diagnostics;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 点云转pt{ class Program { static void Main(string[] args) { //测时 Stopwatch st = new Stopwatch(); st.Start(); string wjming = "坐标" + "(" + DateTime.Now.ToString("yyyyMMddhhmmss") + ")"; string path = @"E:\C#\点云转pt2\点云转pt2\bin\Debug"; File.WriteAllText(path + "\\" + wjming + ".txt", null); List<坐标> result = diaoqu(@"C:\Users\Ouy_\Desktop\all-Octree (0.1).txt"); using (StreamWriter sw = new StreamWriter(wjming + ".txt")) { foreach (var item1 in result) { sw.WriteLine(item1.Name + ",," + item1.X + "," + item1.Y + "," + item1.H); } } st.Stop(); Console.WriteLine("OK!Time: " + st.Elapsed); } static List<坐标> diaoqu(string a) { FileStream fs = new FileStream(a, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); StreamReader m_streamReader = new StreamReader(fs); m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin); int index = 0; string strLine = m_streamReader.ReadLine(); List<坐标> result = new List<坐标>(); // 从数据流中读取每一行,直到文件的最后一行 while (strLine != null) { string[] s = strLine.Split(‘ ‘);//txt文件格式分隔符 try { 坐标 pt = new 坐标((++index).ToString(), s[0], s[1], s[2]); result.Add(pt); strLine = m_streamReader.ReadLine(); } catch (Exception ex) { Console.Write(ex.ToString()); } } fs.Close(); m_streamReader.Close(); return result; } } class 坐标 { public string Name { get; set; } public string X { get; set; } public string Y { get; set; } public string H { get; set; } public 坐标(string name, string x, string y, string h) { Name = name; X = x; Y = y; H = h; } }}
坐标格式提取转换的两种方法C#、Excel
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。