public static List <WeatherStation> ProcessWeatherData(ShapefileConverter shapefile) { var dataItems = new List <WeatherStation>(); foreach (ShapefileRecord record in shapefile) { var item = new WeatherStation(); if (record.Fields != null) { // get geo-location from shape file (SHP) item.Longitude = record.Points[0][0].X; item.Latitude = record.Points[0][0].Y; // get data about a location from database file (DBF) if (record.Fields.ContainsKey("COUNTRY_NA")) { item.CountryName = (string)(record.Fields["COUNTRY_NA"]); } if (record.Fields.ContainsKey("NAME")) { item.StationName = (string)(record.Fields["NAME"]); } item.Weather.WeatherCondition = WeatherGenerator.GenerateWeatherCondition(item); item.Weather.Temperature = WeatherGenerator.GenerateTemperature(item); // add an item to data collection dataItems.Add(item); } } return(dataItems); }
static async Task Main(string[] args) { WeatherGenerator weather = new WeatherGenerator(); string weatherNow = await weather.GetWeatherAsync(); Console.WriteLine(weatherNow); }
public String Get(String id, String name, double lat, double lon, double elev) { String msg; String options = "Shore=G:/Travaux/BioSIM_API/Layers/Shore.ann&Normals=G:/Travaux/BioSIM_API/Weather/Normals/World 1991-2020.NormalsDB.bin.gz&Daily=G:/Travaux/BioSIM_API/Weather/Daily/Canada-USA 2018-2019.DailyDB.bin.gz"; Location loc = new Location(id, name, lat, lon, elev); if (!m_WG.ContainsKey(options)) { System.Diagnostics.Debug.WriteLine("Initialize Weather Generator"); m_WG[options] = new WeatherGenerator("WG" + m_WG.Count.ToString()); msg = m_WG[options].Initialize(options); if (msg != "Success") { return(msg); } } WeatherGenerator WG = m_WG[options]; ModelExecution model = new ModelExecution("Model1"); msg = model.Initialize("Model=G:/Travaux/BioSIM_API/Models/DegreeDay (Annual).mdl"); if (msg != "Success") { return(msg); } string variables = model.GetWeatherVariablesNeeded(); string parameters = model.GetDefaultParameters(); bool compress = true; string compress_str = compress ? "1" : "0"; //Generate weather for 2018-2019 TeleIO WGout = WG.Generate("Compress=1" + compress_str + "&Variables=" + variables + "&ID=" + id + "&Name=" + name + "&Latitude=" + lat + "&Longitude=" + lon + "&Elevation=" + elev + "&First_year=2018&Last_year=2019&Replications=1"); if (WGout.msg != "Success") { return(WGout.msg); } TeleIO modelOut = model.Execute("Compress=0", WGout);//I think that Web API automatically compress text if (modelOut.msg != "Success") { return(modelOut.msg); } return(System.Text.Encoding.UTF8.GetString(modelOut.data)); }
public async IAsyncEnumerable <QueryResult <WeatherForecast[]?>?> GetWeatherForecastAsync( DateTime startDate) { yield return(new QueryResult <WeatherForecast[]?>() { IsLoading = true }); var ret = await WeatherGenerator.GetWeather(startDate); yield return(new QueryResult <WeatherForecast[]?>() { Data = ret, IsLoading = false }); }
public static void GenerateWeatherFromDateTime(this DateTime dateTime, WeatherNotesWindow window, RoutedEventArgs e) { DayData day; WeatherData[] weatherDatas = null; if (window.CalendarData.ContainsKey(dateTime)) { day = window.CalendarData[dateTime]; if (!day.WeatherGenerated) { weatherDatas = WeatherGenerator.GenerateWeather(dateTime, day.Weather); day.Weather = weatherDatas[0]; } } else { weatherDatas = WeatherGenerator.GenerateWeather(dateTime); day = new DayData(dateTime, window.TbxSelectedDayNotes.Text, weatherDatas[0]); window.CalendarData.Add(dateTime, day); } DateTime prevDate = dateTime.AddDays(-1); if (!day.WeatherGenerated && window.CalendarData.ContainsKey(prevDate)) { DayData prevDay = window.CalendarData[prevDate]; if (prevDay.WeatherGenerated) { day.Weather.Temperature = (day.Weather.Temperature + prevDay.Weather.Temperature) / 2.0; day.Weather.Precipitation.SnowAccumulation = day.Weather.Precipitation.SnowAccumulation + prevDay.Weather.Precipitation.SnowAccumulation; PrecipitationData.MeltSnowOverDay(day.Weather); } } day.WeatherGenerated = true; window.CalendarData.SetDictionaryWeatherDatas(dateTime, weatherDatas); //dateTime.SetSelectedDayWeatherNotes(window.CalendarData, window.TbxSelectedDayNotes, window.LblSelectedDayWeather); e.Handled = true; }
static void Main(string[] args) { string[] arguments = Environment.GetCommandLineArgs(); string exe_path = System.Reflection.Assembly.GetExecutingAssembly().Location; exe_path = System.IO.Path.GetDirectoryName(exe_path); Console.WriteLine("Application path: " + exe_path); //Initialized static data string globa_data = arguments[1]; string options = arguments[2]; Console.WriteLine("trying options: " + globa_data); Console.WriteLine("trying options: " + options); var watch = System.Diagnostics.Stopwatch.StartNew(); string init = new BioSIM_API_GlobalData().InitGlobalData(globa_data); watch.Stop(); Console.WriteLine("Time to initialize global data: " + watch.ElapsedMilliseconds + " ms"); watch.Restart(); Console.WriteLine("Initialize Weather Generator"); WeatherGenerator WG = new WeatherGenerator("WG1"); string msg = WG.Initialize(options); Console.WriteLine(msg); watch.Stop(); Console.WriteLine("Time to initialize Weather Generator: " + watch.ElapsedMilliseconds + " ms"); watch.Restart(); if (msg == "Success") { Console.WriteLine("Initialize DegreeDay model"); ModelExecution model = new ModelExecution("Model1"); msg = model.Initialize("Model=DegreeDay (Annual).mdl"); Console.WriteLine(msg); watch.Stop(); Console.WriteLine("Time to initialize DegreeDay model: " + watch.ElapsedMilliseconds + " ms"); watch.Restart(); if (msg == "Success") { string variables = model.GetWeatherVariablesNeeded(); string parameters = model.GetDefaultParameters(); bool compress = false; string compress_str = compress ? "1" : "0"; //&Elevation=2800 //example of extracting weather from Console.WriteLine("Generate weather for 2018-2019, 1 replications"); TeleIO WGout = WG.Generate("Compress=" + compress_str + "&Variables=" + variables + "&ID=1&Name=Logan&Latitude=41.73333333&Longitude=-111.8&Elevation=120&First_year=2018&Last_year=2019&Replications=1"); Console.WriteLine(WGout.msg); // the code that you want to measure comes here watch.Stop(); Console.WriteLine("Time to generate weather: " + watch.ElapsedMilliseconds + " ms"); watch.Restart(); if (msg == "Success") { Console.WriteLine("Execute DegreeDay Model"); TeleIO modelOut = model.Execute("Compress=" + compress_str, WGout); Console.WriteLine(modelOut.msg); string s = System.Text.Encoding.UTF8.GetString(modelOut.data); Console.WriteLine(s); watch.Stop(); Console.WriteLine("Time to run DD model: " + watch.ElapsedMilliseconds + " ms"); watch.Restart(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Second generation"); WGout = WG.Generate("Compress=" + compress_str + "&Variables=" + variables + "&ID=1&Name=Logan&Latitude=41.73333333&Longitude=-111.8&Elevation=120&First_year=2018&Last_year=2019&Replications=1"); watch.Stop(); Console.WriteLine("Time to generate weather: " + watch.ElapsedMilliseconds + " ms"); watch.Restart(); modelOut = model.Execute("Compress=" + compress_str, WGout); Console.WriteLine(s); watch.Stop(); Console.WriteLine("Time to run DD model: " + watch.ElapsedMilliseconds + " ms"); } } } //string path_out = path + "\\test" + (compress ? ".gz" : ".csv"); //System.IO.FileStream fs = System.IO.File.Create(path_out); //System.IO.BufferedStream file = fs.; //array < unsigned char>^ arr = gcnew array < unsigned char> (10); //file->Read(arr, 0, 10); //fs.Write(modelOut.data, 0, modelOut.data.Length); //fs.Close(); }
public String Get(String shore, String normals, String daily) { String options = "Shore=" + shore + "&Normals=" + normals + "&Daily=" + daily; var watch = System.Diagnostics.Stopwatch.StartNew(); String msg; // return "Lat: " + lat + " lon: "+lon +" Year:"+ year; //string exe_path = System.Reflection.Assembly.GetExecutingAssembly().Location; //exe_path = System.IO.Path.GetDirectoryName(exe_path); String exe_path = "G:\\Travaux\\BioSIM_API"; //string path = Environment.GetEnvironmentVariable("PATH"); //Environment.SetEnvironmentVariable("PATH", exe_path + ";" + path); //Environment.CurrentDirectory = exe_path; // SetDllDirectory(); System.Diagnostics.Debug.WriteLine("trying path: " + exe_path); System.Diagnostics.Debug.WriteLine("trying options: " + options); if (!m_WG.ContainsKey(options)) { System.Diagnostics.Debug.WriteLine("Initialize Weather Generator"); watch.Restart(); m_WG[options] = new WeatherGenerator("WG" + m_WG.Count.ToString()); msg = m_WG[options].Initialize(options); System.Diagnostics.Debug.WriteLine(msg); System.Diagnostics.Debug.WriteLine("Time to initialize Weather Generator: " + watch.ElapsedMilliseconds + " ms"); if (msg != "Success") { return(msg); } } WeatherGenerator WG = m_WG[options]; System.Diagnostics.Debug.WriteLine("Initialize DegreeDay model"); watch.Restart(); ModelExecution model = new ModelExecution("Model1"); msg = model.Initialize("Model=" + exe_path + "\\Models\\DegreeDay (Annual).mdl"); System.Diagnostics.Debug.WriteLine(msg); System.Diagnostics.Debug.WriteLine("Time to initialize DegreeDay model: " + watch.ElapsedMilliseconds + " ms"); if (msg != "Success") { return(msg); } string variables = model.GetWeatherVariablesNeeded(); string parameters = model.GetDefaultParameters(); bool compress = true; string compress_str = compress ? "1" : "0"; //Generate weather for 2018-2019 System.Diagnostics.Debug.WriteLine("Generate weather for 2018-2019, 1 replications"); watch.Restart(); TeleIO WGout = WG.Generate("Compress=" + compress_str + "&Variables=" + variables + "&ID=1&Name=Logan&Latitude=41.73333333&Longitude=-111.8&Elevation=120&First_year=2018&Last_year=2019&Replications=1"); System.Diagnostics.Debug.WriteLine(WGout.msg); System.Diagnostics.Debug.WriteLine("Time to generate weather: " + watch.ElapsedMilliseconds + " ms"); if (WGout.msg != "Success") { return(WGout.msg); } //execute DD model System.Diagnostics.Debug.WriteLine("Execute DegreeDay Model"); watch.Restart(); TeleIO modelOut = model.Execute("Compress=0", WGout);//I think that Web API automatically compress text System.Diagnostics.Debug.WriteLine(modelOut.msg); System.Diagnostics.Debug.WriteLine("Time to run DD model: " + watch.ElapsedMilliseconds + " ms"); if (modelOut.msg != "Success") { return(modelOut.msg); } return(System.Text.Encoding.UTF8.GetString(modelOut.data)); }