/// <summary>
/// Write the series offsets to a data file in CSV format.
/// </summary>
/// <returns>0 if successful; -ve for error code</returns>
protected int WriteSeriesOffsets()
{
OpenTemp.WriteLine(string.Format("Writing the series offsets to file '{0}'...", _outputSeriesOffsetsFile)); // Open the file
StreamWriter sw;
try
{
sw = new StreamWriter(_outputSeriesOffsetsFile, false); // Overwrite (do not append)
OpenTemp.WriteLine(" File opened for writing");
}
catch (Exception ex)
{
OpenTemp.WriteLine(string.Format(" Exception thrown when opening file: {0}", ex.ToString()));
return -1;
}
if (sw == null)
{
OpenTemp.WriteLine(" Failed to open file (check that it exists and the path is correct)");
return -2;
}
// Write header
sw.WriteLine("COUNTRY, STATION, SERIES, LATITUDE, FIRST, LAST, OFFSET");
// Loop over all stations and series
int nSeries = 0;
foreach (Station station in _stations.Values)
{
foreach (Byte seriesNumber in station.SeriesNumbers)
{
SortedList<DateTime, float?> readings = station.GetReadings(seriesNumber);
DateTime firstDate = readings.Keys[0];
DateTime lastDate = readings.Keys[readings.Keys.Count - 1];
sw.WriteLine(string.Format("{0}, {1}, {2}, {3:F2}, {4:F2}, {5:F2}, {6:F3}",
station.Country,
station.StationID,
seriesNumber,
station.Latitude,
firstDate.Year + (float)firstDate.Month / 12.0f,
lastDate.Year + (float)lastDate.Month / 12.0f,
station.GetSeriesOffset(seriesNumber)));
nSeries++;
}
}
// Done
sw.Close();
// Done
OpenTemp.WriteLine(string.Format(" Writing finished: {0} series written", nSeries));
return 0;
}