AirScout/Radars/Radars/RadarEU_CZ.cs

77 wiersze
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Net;
namespace RainScout.Radars
{
public class RadarEU_CZ : RainScout.Radars.Generic
{
string BaseURL = "http://www.radareu.cz/data/radar/";
public RadarEU_CZ()
{
Left = -14.5;
Right = 45.25;
Top = 72.5;
Bottom = 31.0;
Source = "http://www.radareu.cz";
}
public Bitmap GetRadarImage(DateTime utc)
{
// gets actual radar image from url
string imagename = "radar.anim." + utc.ToString("yyyyMMdd") + "." + utc.ToString("HHmm") + ".0.png";
Bitmap image = null;
URL = BaseURL + imagename;
try
{
var request = WebRequest.Create(URL);
using (var response = request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
image = new Bitmap(stream);
}
}
image.Save("RadarEU_CZ.png");
this.Timestamp = utc;
}
catch (Exception ex)
{
// do nothing
return null;
}
return image;
}
public Bitmap GetRadarImage()
{
// get current date and time string
DateTime utc = DateTime.UtcNow;
// round it to 15min interval
if (utc.Minute < 15)
utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 0, 0, DateTimeKind.Utc);
else if (utc.Minute < 30)
utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 15, 0, DateTimeKind.Utc);
else if (utc.Minute < 45)
utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 30, 0, DateTimeKind.Utc);
else if (utc.Minute < 60)
utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 45, 0, DateTimeKind.Utc);
Bitmap bm = GetRadarImage(utc);
if (bm == null)
{
// call failed --> try with 1 period earlier
utc = utc - new TimeSpan(0, 15, 0);
GetRadarImage(utc);
}
return bm;
}
}
}