加载CSV数据并创建点数组

时间:2014-04-17 12:29:12

标签: c# csv

我目前的任务是在Visual C#2010 Express中创建一个小型C#应用程序,该应用程序加载CSV文件并处理信息以创建要在地图上显示的点阵列。 CSV中的条目如下:

设备;纬度;经度;速度;时间

57EA7531-0E1F-41C7-B785-22398D445FEA; 55.512.653; 13.306.292; 93; 13-4-2014 14:01

想法是加载此信息,拆分数据,将其指定为以下代码的不同属性:

ShapeLayer sl = new ShapeLayer("Marker");
wpfMap.Layers.Add(sl);
marker.Width = marker.Height = 20;
marker.ToolTip = "A map marker"; [needs to contain Device;Latitude;Longitude;Speed;Time]
sl.Shapes.Add(marker);
ShapeCanvas.SetLocation(marker, new System.Windows.Point(8.4, 49)); [needs to contain Longitude,Latitude]

中间注明[]是需要输入CSV的数据。

此CSV文件包含大约2000个条目,并且对于每个条目,需要使用上述代码创建点。我在加载CSV并使用处理过的数据创建数组方面经验非常有限,是否有人可以帮助我?

1 个答案:

答案 0 :(得分:0)

有不同的方式。我会做那样的事。

注意即可。此解决方案中将需要异常处理。

 string[] allLines = System.IO.File.ReadAllLines(@"yourCVSPath.csv");

 foreach(string sLine in allLines)
 {
         string[] arrLine = sLine.Split(new char[] { ',' }); // or ';' according to provided data

          if (arrLine.Length == 5)
          {
               string sDevice = arrLine[0];
               string sLatitude = arrLine[1];
               string sLongitude = arrLine[2];
               string sSpeed = arrLine[3];
               string sTime = arrLine[4];

               ShapeLayer sl = new ShapeLayer("Marker");
               wpfMap.Layers.Add(sl);
               marker.Width = marker.Height = 20;
               marker.ToolTip = sLine; //[needs to contain Device;Latitude;Longitude;Speed;Time]
               sl.Shapes.Add(marker);
               ShapeCanvas.SetLocation(marker, new System.Windows.Point(sLongitude, sLatitude)); //[needs to contain Longitude,Latitude]
          }
  }