2014-04-17 2 views
0

Je suis actuellement chargé de créer une petite application C# dans Visual C# 2010 Express qui charge un fichier CSV et traite les informations pour créer un tableau de points, à afficher sur une carte. Les entrées du CSV sont les suivantes:chargement de données CSV et création d'un tableau de points

périphérique, Latitude, Longitude, vitesse, temps

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

l'idée est de charger ces informations, partager les données, nommer à différents attributs du code ci-dessous:

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] 

noté inbetween [] est les données du CSV qui a besoin être entré.

Ce fichier CSV contient environ 2000 entrées et pour chaque entrée, un point doit être créé en utilisant le code ci-dessus. J'ai une expérience très limitée avec le chargement de CSV et la création d'un tableau avec les données traitées, y a-t-il quelqu'un qui peut m'aider?

+0

Jetez un oeil à http://stackoverflow.com/questions/1375410/very-simple-c-sharp-csv-reader pour charger le CSV et diviser les données –

+0

Comme vous l'avez mentionné CSV contient 2000 entrées. Quel est le critère pour correspondre à quelle entrée appartient à quel marqueur? – Hassan

+0

les données dans chaque ligne du fichier CSV doivent être traitées dans ce morceau de code et stockées dans un tableau de «marqueurs», après quoi je peux les afficher. – KDE

Répondre

0

Il existe différentes façons. Je ferai quelque chose comme ça.

NOTE. Une gestion des exceptions sera requise dans cette solution.

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] 
      } 
    } 
Questions connexes