/// <summary>Get a rainfall forecast for the specified station number.</summary> /// <param name="stationNumber">The SILO station number.</param> /// <returns>Stream of data.</returns> public Stream Get(int stationNumber, DateTime nowDate, bool rainOnly) { // Get SILO data and write to a temporary file. DateTime startDate = new DateTime(1981, 1, 1); MemoryStream dataStream = WeatherFile.ExtractMetStreamFromSILO(stationNumber, startDate, DateTime.Now); string siloFileName = GetTemporaryFileName(); string forecastFileName = null; try { File.WriteAllBytes(siloFileName, dataStream.ToArray()); ChangeToWorkingDirectory(); // Run the MatLab script over the temporary SILO file. POAMAforecast.Class1 forecast = new POAMAforecast.Class1(); MWArray metFile = new MWCharArray(siloFileName); MWArray rainfallOnly = new MWNumericArray((double)1); if (!rainOnly) rainfallOnly = new MWNumericArray((double)0); MWArray writeFiles = new MWNumericArray((double)1.0); MWArray startDay = new MWNumericArray(Convert.ToDouble(nowDate.Day)); MWArray startMonth = new MWNumericArray(Convert.ToDouble(nowDate.Month)); MWArray startYear = new MWNumericArray(Convert.ToDouble(nowDate.Year)); forecast.calsite(metFile, rainfallOnly, writeFiles, startDay, startMonth, startYear); forecastFileName = siloFileName.Replace(".sim", "") + "_" + nowDate.Year + ".sim"; // Get rid of temporary file. File.Delete(siloFileName); if (WebOperationContext.Current != null && WebOperationContext.Current.OutgoingRequest != null) WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain"; if (File.Exists(forecastFileName)) { // Read in the forecast data. byte[] bytes = File.ReadAllBytes(forecastFileName); return new MemoryStream(bytes); } else return null; } finally { if (File.Exists(siloFileName)) File.Delete(siloFileName); if (forecastFileName != null && File.Exists(forecastFileName)) File.Delete(forecastFileName); } }
static void Main(string[] args) { Directory.SetCurrentDirectory(@"G:\"); POAMAforecast.Class1 d = new POAMAforecast.Class1(); MWArray metFile = new MWCharArray(@"Burnie.sim"); MWArray startMonth = new MWNumericArray((double) 6.0); MWArray startDay = new MWNumericArray((double) 1.0); MWArray rainOnly = new MWNumericArray((double)1.0); MWArray writeFiles = new MWNumericArray((double)1.0); MWArray lastYearOnly = new MWNumericArray((double)1.0); d.calsite(metFile, startMonth, startDay, rainOnly, writeFiles, lastYearOnly); }
static void Main(string[] args) { Directory.SetCurrentDirectory(@"G:\"); POAMAforecast.Class1 d = new POAMAforecast.Class1(); MWArray metFile = new MWCharArray(@"Burnie.sim"); MWArray startMonth = new MWNumericArray((double)6.0); MWArray startDay = new MWNumericArray((double)1.0); MWArray rainOnly = new MWNumericArray((double)1.0); MWArray writeFiles = new MWNumericArray((double)1.0); MWArray lastYearOnly = new MWNumericArray((double)1.0); d.calsite(metFile, startMonth, startDay, rainOnly, writeFiles, lastYearOnly); }
/// <summary>Get a rainfall forecast for the specified station number.</summary> /// <param name="stationNumber">The SILO station number.</param> /// <returns>Stream of data.</returns> private Stream Get(int stationNumber, DateTime nowDate, bool rainOnly, bool asPlainText) { // Get SILO data and write to a temporary file. DateTime startDate = new DateTime(1981, 1, 1); MemoryStream dataStream = Weather.ExtractMetStreamFromSILO(stationNumber, startDate, DateTime.Now); string siloFileName = GetTemporaryFileName(); string forecastFileName = null; try { File.WriteAllBytes(siloFileName, dataStream.ToArray()); ChangeToWorkingDirectory(); // Run the MatLab script over the temporary SILO file. POAMAforecast.Class1 forecast = new POAMAforecast.Class1(); MWArray metFile = new MWCharArray(siloFileName); MWArray rainfallOnly = new MWNumericArray((double)1); if (!rainOnly) { rainfallOnly = new MWNumericArray((double)0); } MWArray writeFiles = new MWNumericArray((double)1.0); MWArray startDay = new MWNumericArray(Convert.ToDouble(nowDate.Day)); MWArray startMonth = new MWNumericArray(Convert.ToDouble(nowDate.Month)); MWArray startYear = new MWNumericArray(Convert.ToDouble(nowDate.Year)); forecast.calsite(metFile, rainfallOnly, writeFiles, startDay, startMonth, startYear); forecastFileName = siloFileName.Replace(".sim", "") + "_" + nowDate.Year + ".sim"; // Get rid of temporary file. File.Delete(siloFileName); if (asPlainText && WebOperationContext.Current != null && WebOperationContext.Current.OutgoingRequest != null) { WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain"; } if (File.Exists(forecastFileName)) { // Read in the forecast data. byte[] bytes = File.ReadAllBytes(forecastFileName); return(new MemoryStream(bytes)); } else { return(null); } } finally { if (File.Exists(siloFileName)) { File.Delete(siloFileName); } if (forecastFileName != null && File.Exists(forecastFileName)) { File.Delete(forecastFileName); } } }