0

変更したい .csv ファイルがあります。ファイルの形式は次のとおりです。

Id, UTMGridEast, UTMGridNorth, LocDate, LocTime, Species

このデータセットは UTM 座標を使用しており、それらを緯度/経度に変換して、.csv ファイルのそれぞれの場所に戻したいと考えています。私はすでにUTM座標を変換することができ、その部分はソートされています!

現在、これらの値を分離して配列リストに追加するコードが既にあります。あとは、内容を編集して .csv ファイルに書き戻すだけです。

私の GUI は 2 つのボタンだけで構成されています。これまでのコードは次のとおりです。

    public partial class MainWindow : Window
{
    private string _filename;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void btnLoad_Click(object sender, RoutedEventArgs e)
    {
        // Configure open file dialog box
        Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
        dlg.FileName = "Dataset"; // Default file name
        dlg.DefaultExt = ".txt"; // Default file extension
        dlg.Filter = "Commar Seperated Values (.csv)|*.csv" ; // Filter files by extension 

        // Show open file dialog box
        Nullable<bool> result = dlg.ShowDialog();

        // Process open file dialog box results 
        if (result == true)
        {
            // Open document 
            _filename = dlg.FileName;
            txtFilePath.Text = _filename;
        }
    }

    private void btnConvert_Click(object sender, RoutedEventArgs e)
    {
        ConvertToLatLong();
    }

    private void ConvertToLatLong()
    {
        GeoUTMConverter geoUtmConverter = new GeoUTMConverter();
        TextWriter tw = new StreamWriter("starkey.txt");

        string textFile = System.IO.File.ReadAllText(_filename);
        List<string> lines = new List<string>(textFile.Split(new[] { Environment.NewLine }, StringSplitOptions.None));
        for (int iLine = 0; iLine < lines.Count; iLine++)
        {
            List<string> values = new List<string>(lines[iLine].Split(new[] { "," }, StringSplitOptions.None));
            for (int iValue = 0; iValue < values.Count; iValue++)
            {
                Console.WriteLine(String.Format("Line {0} Value {1} : {2}", iLine, iValue, values[iValue]));

                if (iLine > 0)
                {
                    geoUtmConverter.ToLatLon(Convert.ToDouble(values[1]), Convert.ToDouble(values[2]), 11, GeoUTMConverter.Hemisphere.Northern);
                    Double latitude = geoUtmConverter.Latitude;
                    Double longitude = geoUtmConverter.Longitude;
                    Console.WriteLine("Latitude: " + latitude + " Longitude: " + longitude);
                    //EDIT AND WRITE TO FILE HERE 
                }
            }
        }
    }
}

新しいarraylistを作成してそれを使用して記述しようとしましたStreamWriterが、正しく取得できないようです。

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

0

欠けていると思われる部分は

values[1]=latitude;
values[2]=longitude;
tw.WriteLine(String.Join(",",values);

最後にライターを閉じることを忘れないでください。

于 2012-10-03T07:57:41.067 に答える