private Graphic GenerateGraphic(Diamond1EntityItem item) { MapPoint point = new MapPoint(item.Longitude, item.Latitude, SpatialReferences.Wgs84); var graphic = new Graphic(point); if (Validation.IsValidInt(item.WindAngle)) { var symbol = new PictureMarkerSymbol(); symbol.SetSourceAsync(new Uri("pack://application:,,,/Pmss.Micaps.Render;component/Img/Wind.png")).GetAwaiter().GetResult(); symbol.Angle = item.WindAngle; graphic.Symbol = symbol; } else { var symbol = new SimpleMarkerSymbol { Style = SimpleMarkerStyle.Circle, Color = Colors.Black, Size = 5 }; graphic.Symbol = symbol; } graphic.Attributes[Diamond1Attributes.StationNumber] = item.StationNumber; graphic.Attributes[Diamond1Attributes.CloudAmount] = Validation.IsValidInt(item.CloudAmount) ? item.CloudAmount.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.WindSpeed] = Validation.IsValidInt(item.WindSpeed) ? item.WindSpeed.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.AirPressure] = Validation.IsValidInt(item.AirPressure) ? item.AirPressure.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.ThreehoursAP] = Validation.IsValidInt(item.ThreehoursAP) ? item.ThreehoursAP.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.SixhoursRain] = Validation.IsValidFloat(item.SixhoursRain) ? item.SixhoursRain.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.DiYunLiang] = Validation.IsValidInt(item.DiYunLiang) ? item.DiYunLiang.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.DiYunGao] = Validation.IsValidInt(item.DiYunGao) ? item.DiYunGao.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.DewPoint] = Validation.IsValidInt(item.DewPoint) ? item.DewPoint.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.Visibility] = Validation.IsValidFloat(item.Visibility) ? item.Visibility.ToString() : string.Empty; graphic.Attributes[Diamond1Attributes.Temperature] = Validation.IsValidFloat(item.Temperature) ? item.Temperature.ToString() : string.Empty; return(graphic); }
public Diamond1Entity RetrieveEntity() { var result = new Diamond1Entity(); result.Items = new List <Diamond1EntityItem>(); using (var reader = new StreamReader(this.FilePath, Encoding.Default)) { string line = string.Empty; string[] array = null; string pattern = @"\s+"; // line1 line = reader.ReadLine(); array = Regex.Split(line?.Trim(), pattern); if (array == null || array.Length <= 2) { throw new InvalidDataException(this.FilePath); } result.DiamondType = Convert.ToInt32(array[1]); result.Description = array[2]; for (int i = 3; i < array.Length; i++) { result.Description += " " + array[i]; } // header may need more than 1 line string[] header = new string[5]; int index = 0; while (index < 5) { line = reader.ReadLine(); array = Regex.Split(line?.Trim(), pattern); if (array == null) { throw new InvalidDataException(this.FilePath); } foreach (var item in array) { header[index++] = item; } } result.Year = Convert.ToInt32(header[0]); result.Month = Convert.ToInt32(header[1]); result.Day = Convert.ToInt32(header[2]); result.Hour = Convert.ToInt32(header[3]); result.StationAmount = Convert.ToInt32(header[4]); // Items while ((line = reader.ReadLine()) != null) { array = Regex.Split(line?.Trim(), pattern); if (array == null || array.Length < 24) { throw new InvalidDataException(this.FilePath); } var item = new Diamond1EntityItem() { StationNumber = Convert.ToInt64(array[0]), Longitude = Convert.ToSingle(array[1]), Latitude = Convert.ToSingle(array[2]), Elevation = Convert.ToSingle(array[3]), StationLevel = Convert.ToInt32(array[4]), CloudAmount = Convert.ToInt32(array[5]), WindAngle = Convert.ToInt32(array[6]), WindSpeed = Convert.ToInt32(array[7]), AirPressure = Convert.ToInt32(array[8]), ThreehoursAP = Convert.ToInt32(array[9]), LastWeather1 = Convert.ToInt32(array[10]), LastWeather2 = Convert.ToInt32(array[11]), SixhoursRain = Convert.ToSingle(array[12]), DiYunZhuang = Convert.ToInt32(array[13]), DiYunLiang = Convert.ToInt32(array[14]), DiYunGao = Convert.ToInt32(array[15]), DewPoint = Convert.ToInt32(array[16]), Visibility = Convert.ToSingle(array[17]), CurrentWeather = Convert.ToInt32(array[18]), Temperature = Convert.ToSingle(array[19]), ZhongYunZhuang = Convert.ToInt32(array[20]), GaoYunZhuang = Convert.ToInt32(array[21]), Flag1 = Convert.ToInt32(array[22]), Flag2 = Convert.ToInt32(array[23]) }; if (item.Flag1 == 1 && item.Flag2 == 2) { if (array.Length != 26) { throw new InvalidDataException(this.FilePath); } item.TemperatureDiff24 = Convert.ToInt32(array[24]); item.PressureDiff24 = Convert.ToInt32(array[25]); } result.Items.Add(item); } } return(result); }