コード例 #1
0
        private Graphic GenerateGraphic(Diamond2EntityItem item)
        {
            MapPoint point   = new MapPoint(item.Longitude, item.Latitude, SpatialReferences.Wgs84);
            var      graphic = new Graphic(point);

            if (Validation.IsValidFloat(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
                };
                graphic.Symbol = symbol;
            }


            graphic.Attributes[Diamond2Attributes.StationNumber]   = item.StationNumber;
            graphic.Attributes[Diamond2Attributes.Temperature]     = Validation.IsValidFloat(item.Temperature) ? item.Temperature.ToString() : string.Empty;
            graphic.Attributes[Diamond2Attributes.TemperatureDiff] = Validation.IsValidFloat(item.TemperatureDiff) ? item.TemperatureDiff.ToString() : string.Empty;
            graphic.Attributes[Diamond2Attributes.Height]          = Validation.IsValidFloat(item.Height) ? item.Height.ToString() : string.Empty;
            graphic.Attributes[Diamond2Attributes.DewPoint]        = Validation.IsValidFloat(item.DewPoint) ? item.DewPoint.ToString() : string.Empty;
            graphic.Attributes[Diamond2Attributes.WindSpeed]       = Validation.IsValidFloat(item.WindSpeed) ? item.WindSpeed.ToString() : string.Empty;

            return(graphic);
        }
コード例 #2
0
ファイル: Diamond2Reader.cs プロジェクト: sbyujx/PmssWpfApp
        public Diamond2Entity RetrieveEntity()
        {
            var entity = new Diamond2Entity();

            entity.Items = new List <Diamond2EntityItem>();

            using (var reader = new StreamReader(this.FilePath, Encoding.Default))
            {
                string line1       = string.Empty;
                string line        = string.Empty;
                string pattern     = @"\s+";
                int    line1Length = 3;  // type, description
                int    lineLength  = 10; // Items

                // Get first line
                line1 = reader.ReadLine();
                var array = Regex.Split(line1?.Trim(), pattern);
                if (array == null || array.Length < line1Length)
                {
                    throw new InvalidDataException(this.FilePath + " Line1");
                }
                entity.DiamondType = Convert.ToInt32(array[1]);
                entity.Description = array[2];
                for (int i = 3; i < array.Length; i++)
                {
                    entity.Description += " " + array[i];
                }

                // header may need more than 1 line
                string[] header = new string[6];
                int      index  = 0;
                while (index < 6)
                {
                    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;
                    }
                }
                entity.Year          = Convert.ToInt32(header[0]);
                entity.Month         = Convert.ToInt32(header[1]);
                entity.Day           = Convert.ToInt32(header[2]);
                entity.Hour          = Convert.ToInt32(header[3]);
                entity.Level         = Convert.ToInt32(header[4]);
                entity.StationAmount = Convert.ToInt32(header[5]);

                // Get Items
                while ((line = reader.ReadLine()) != null)
                {
                    array = Regex.Split(line, pattern);
                    if (array == null || array.Length != lineLength)
                    {
                        throw new InvalidDataException(this.FilePath + " Items");
                    }

                    var item = new Diamond2EntityItem
                    {
                        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]),
                        Height          = Convert.ToSingle(array[5]),
                        Temperature     = Convert.ToSingle(array[6]),
                        TemperatureDiff = Convert.ToSingle(array[7]),
                        WindAngle       = Convert.ToSingle(array[8]),
                        WindSpeed       = Convert.ToSingle(array[9])
                    };
                    entity.Items.Add(item);
                }
            }

            return(entity);
        }