Beispiel #1
0
        /// <summary>
        /// Adds a category with the given values to the Scheme.
        /// </summary>
        /// <param name="startValue">First value, that belongs to this category.</param>
        /// <param name="endValue">Last value, that belongs to this category.</param>
        /// <param name="color">Color of this category.</param>
        private void AddCategory(double startValue, double endValue, Color color)
        {
            ICategory newCat = new ColorCategory(startValue, endValue, color, color);

            newCat.Range.MaxIsInclusive = true;
            newCat.Range.MinIsInclusive = true;
            newCat.LegendText           = startValue.ToString(CultureInfo.CurrentCulture);
            Scheme.AddCategory(newCat);
        }
Beispiel #2
0
 private void Configure()
 {
     _shadedRelief = new ShadedRelief();
     _noDataColor  = Color.Transparent;
     Scheme        = new ColorScheme();
     if (_raster != null)
     {
         var Colors = _raster.CategoryColors();
         if (Colors != null && Colors.Length > 0)
         {   // Use colors that are built into the raster, e.g. GeoTIFF with palette
             var  Names        = _raster.CategoryNames();
             bool overMaxCount = false;
             var  UniqueValues = _raster.GetUniqueValues(Colors.Length, out overMaxCount);
             _isElevation = false;
             for (int i = 0; i < Colors.Length; i++)
             {   //Only add colors to the legend if they appear in the layer
                 //NLCD CategoryColors include 256 colors, but only 16 are valid
                 if (UniqueValues.Contains(Convert.ToDouble(i)))
                 {   // It seems buggy that using value i - 1 below works
                     ICategory newCat = new ColorCategory(i - 1, Colors[i]);
                     if (Names != null && Names.Length > i)
                     {
                         newCat.LegendText = Names[i];
                     }
                     else
                     {
                         newCat.LegendText = i.ToString();
                     }
                     Scheme.AddCategory(newCat);
                 }
             }
         }
         else // Assume grid is elevation
         {
             _elevationFactor = 1 / 3640000f;
             _isElevation     = true;
             _extrusion       = 1;
             _scheme.ApplyScheme(ColorSchemeType.FallLeaves, _raster);
         }
     }
 }
Beispiel #3
0
        private void Configure()
        {
            _shadedRelief = new ShadedRelief();
            _noDataColor  = Color.Transparent;
            Scheme        = new ColorScheme();
            if (_raster != null)
            {
                var Colors = _raster.CategoryColors();
                if (Colors != null && Colors.Length > 0)
                {   // Use colors that are built into the raster, e.g. GeoTIFF with palette
                    _isElevation = false;

                    //use all colors instead of unique colors because unique colors are not allways set/correct
                    int lastColor = Colors[0].ToArgb(); //changed by jany_ 2015-06-02
                    int firstNr   = 0;

                    //group succeding values with the same color to the same category
                    for (int i = 1; i < Colors.Length; i++)
                    {
                        int hash = Colors[i].ToArgb();
                        if (hash != lastColor || i == Colors.Length - 1)
                        {
                            ICategory newCat = new ColorCategory(firstNr, i - 1, Colors[firstNr], Colors[firstNr]);
                            newCat.Range.MaxIsInclusive = true;
                            newCat.Range.MinIsInclusive = true;
                            newCat.LegendText           = firstNr.ToString();
                            Scheme.AddCategory(newCat);
                            firstNr   = i;
                            lastColor = hash;
                        }
                    }
                }
                else // Assume grid is elevation
                {
                    _elevationFactor = 1 / 3640000f;
                    _isElevation     = true;
                    _extrusion       = 1;
                    _scheme.ApplyScheme(ColorSchemeType.FallLeaves, _raster);
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Applies the specified color scheme and uses the specified raster to define the
        /// minimum and maximum to use for the scheme.
        /// </summary>
        /// <param name="schemeType">ColorSchemeType.</param>
        /// <param name="min">THe minimum value to use for the scheme.</param>
        /// <param name="max">THe maximum value to use for the scheme.</param>
        public void ApplyScheme(ColorSchemeType schemeType, double min, double max)
        {
            if (Categories == null)
            {
                Categories = new ColorCategoryCollection(this);
            }
            else
            {
                Categories.Clear();
            }

            IColorCategory eqCat = null, low = null, high = null;

            if (min == max)
            {
                // Create one category
                eqCat = new ColorCategory(min, max)
                {
                    Range = { MaxIsInclusive = true, MinIsInclusive = true }
                };
                eqCat.ApplyMinMax(EditorSettings);
                Categories.Add(eqCat);
            }
            else
            {
                // Create two categories
                low = new ColorCategory(min, (min + max) / 2)
                {
                    Range = { MaxIsInclusive = true }
                };
                high = new ColorCategory((min + max) / 2, max)
                {
                    Range = { MaxIsInclusive = true }
                };
                low.ApplyMinMax(EditorSettings);
                high.ApplyMinMax(EditorSettings);
                Categories.Add(low);
                Categories.Add(high);
            }

            Color lowColor, midColor, highColor;
            int   alpha = Utils.ByteRange(Convert.ToInt32(_opacity * 255F));

            switch (schemeType)
            {
            case ColorSchemeType.SummerMountains:
                lowColor  = Color.FromArgb(alpha, 10, 100, 10);
                midColor  = Color.FromArgb(alpha, 153, 125, 25);
                highColor = Color.FromArgb(alpha, 255, 255, 255);
                break;

            case ColorSchemeType.FallLeaves:
                lowColor  = Color.FromArgb(alpha, 10, 100, 10);
                midColor  = Color.FromArgb(alpha, 199, 130, 61);
                highColor = Color.FromArgb(alpha, 241, 220, 133);
                break;

            case ColorSchemeType.Desert:
                lowColor  = Color.FromArgb(alpha, 211, 206, 97);
                midColor  = Color.FromArgb(alpha, 139, 120, 112);
                highColor = Color.FromArgb(alpha, 255, 255, 255);
                break;

            case ColorSchemeType.Glaciers:
                lowColor  = Color.FromArgb(alpha, 105, 171, 224);
                midColor  = Color.FromArgb(alpha, 162, 234, 240);
                highColor = Color.FromArgb(alpha, 255, 255, 255);
                break;

            case ColorSchemeType.Meadow:
                lowColor  = Color.FromArgb(alpha, 68, 128, 71);
                midColor  = Color.FromArgb(alpha, 43, 91, 30);
                highColor = Color.FromArgb(alpha, 167, 220, 168);
                break;

            case ColorSchemeType.ValleyFires:
                lowColor  = Color.FromArgb(alpha, 164, 0, 0);
                midColor  = Color.FromArgb(alpha, 255, 128, 64);
                highColor = Color.FromArgb(alpha, 255, 255, 191);
                break;

            case ColorSchemeType.DeadSea:
                lowColor  = Color.FromArgb(alpha, 51, 137, 208);
                midColor  = Color.FromArgb(alpha, 226, 227, 166);
                highColor = Color.FromArgb(alpha, 151, 146, 117);
                break;

            case ColorSchemeType.Highway:
                lowColor  = Color.FromArgb(alpha, 51, 137, 208);
                midColor  = Color.FromArgb(alpha, 214, 207, 124);
                highColor = Color.FromArgb(alpha, 54, 152, 69);
                break;

            default:
                lowColor = midColor = highColor = Color.Transparent;
                break;
            }

            if (eqCat != null)
            {
                eqCat.LowColor = eqCat.HighColor = lowColor;
            }
            else
            {
                Debug.Assert(low != null, "low may not be null");
                Debug.Assert(high != null, "high may not be null");

                low.LowColor   = lowColor;
                low.HighColor  = midColor;
                high.LowColor  = midColor;
                high.HighColor = highColor;
            }

            OnItemChanged(this);
        }
Beispiel #5
0
 private void Configure()
 {
     _shadedRelief = new ShadedRelief();
     _noDataColor = Color.Transparent;
     Scheme = new ColorScheme();
     if (_raster != null)
     {
         var Colors = _raster.CategoryColors();
         if (Colors != null && Colors.Length > 0)
         {   // Use colors that are built into the raster, e.g. GeoTIFF with palette
             var names = _raster.CategoryNames();
             bool overMaxCount;
             var uniqueValues = _raster.GetUniqueValues(Colors.Length, out overMaxCount);
             _isElevation = false;
             for (int i = 0; i < Colors.Length; i++)
             {   //Only add colors to the legend if they appear in the layer
                 //NLCD CategoryColors include 256 colors, but only 16 are valid
                 if (uniqueValues.Contains(Convert.ToDouble(i)))
                 {   // It seems buggy that using value i - 1 below works
                     ICategory newCat = new ColorCategory(i - 1, Colors[i]);
                     if (names != null && names.Length > i)
                         newCat.LegendText = names[i];
                     else
                         newCat.LegendText = i.ToString();
                     Scheme.AddCategory(newCat);
                 }
             }
         }
         else // Assume grid is elevation
         {
             _elevationFactor = 1 / 3640000f;
             _isElevation = true;
             _extrusion = 1;
             _scheme.ApplyScheme(ColorSchemeType.FallLeaves, _raster);
         }
     }
 }
Beispiel #6
0
        private void SchemeRaster()
        {
            IMapRasterLayer layer = null;
            foreach (IMapRasterLayer ra in map1.GetRasterLayers())
            {
                layer = ra;
            }
            if (layer == null || valuesMinMax == null) return;
            double min = valuesMinMax[0];
            double max = valuesMinMax[1];



            ColorScheme scheme = new ColorScheme();

            ColorCategory category2 = new ColorCategory(-100000, min, Color.FromArgb(100, 0, 0), Color.FromArgb(250, 0, 0));
            category2.LegendText = "< " + min.ToString();
            scheme.AddCategory(category2);

            double step = (max - min) / 10;
            int i;
            for (i = 0; i < 10; i++)
            {
                ColorCategory category1 = new ColorCategory((min + (step * i)), (min + ((i + 1) * step)), Color.FromArgb(250 - (i * 20), i * 10, i * 22), Color.FromArgb(250 - (((i + 1) * 20)), (i + 1) * 10, (i + 1) * 22));
                double rmin = Math.Round(min + (step * i), 4);
                double rmax = Math.Round(min + ((i + 1) * step), 4);
                category1.LegendText = rmin.ToString() + " " + rmax.ToString();
                scheme.AddCategory(category1);
            }

            ColorCategory category3 = new ColorCategory(max, 10000000, Color.FromArgb(50, 100, 220), Color.FromArgb(30, 110, 244));
            category2.LegendText = "> " + max.ToString();
            scheme.AddCategory(category3);


            layer.Symbolizer.Scheme = scheme;
            layer.WriteBitmap();
            map1.Refresh();
        }
Beispiel #7
0
        /// <summary>
        /// Applies the specified color scheme and uses the specified raster to define the
        /// minimum and maximum to use for the scheme.
        /// </summary>
        /// <param name="schemeType"></param>
        /// <param name="min">THe minimum value to use for the scheme</param>
        /// <param name="max">THe maximum value to use for the scheme</param>
        public void ApplyScheme(ColorSchemeType schemeType, double min, double max)
        {
            if (Categories == null)
            {
                Categories = new ColorCategoryCollection(this);
            }
            int alpha = ByteRange(Convert.ToInt32(_opacity * 255F));
            // this part should be overridden in the type specific version

            Categories.Clear();
            IColorCategory low = new ColorCategory(min, (min + max) / 2);
            low.Range.MaxIsInclusive = true;
            IColorCategory high = new ColorCategory((min + max) / 2, max);
            high.Range.MaxIsInclusive = true;
            low.ApplyMinMax(EditorSettings);
            high.ApplyMinMax(EditorSettings);
            Categories.Add(low);
            Categories.Add(high);
            switch (schemeType)
            {
                case ColorSchemeType.Summer_Mountains:
                    low.LowColor = Color.FromArgb(alpha, 10, 100, 10);
                    low.HighColor = Color.FromArgb(alpha, 153, 125, 25);
                    high.LowColor = Color.FromArgb(alpha, 153, 125, 25);
                    high.HighColor = Color.FromArgb(alpha, 255, 255, 255);
                    break;
                case ColorSchemeType.FallLeaves:
                    low.LowColor = Color.FromArgb(alpha, 10, 100, 10);
                    low.HighColor = Color.FromArgb(alpha, 199, 130, 61);
                    high.LowColor = Color.FromArgb(alpha, 199, 130, 61);
                    high.HighColor = Color.FromArgb(alpha, 241, 220, 133);
                    break;
                case ColorSchemeType.Desert:
                    low.LowColor = Color.FromArgb(alpha, 211, 206, 97);
                    low.HighColor = Color.FromArgb(alpha, 139, 120, 112);
                    high.LowColor = Color.FromArgb(alpha, 139, 120, 112);
                    high.HighColor = Color.FromArgb(alpha, 255, 255, 255);
                    break;
                case ColorSchemeType.Glaciers:
                    low.LowColor = Color.FromArgb(alpha, 105, 171, 224);
                    low.HighColor = Color.FromArgb(alpha, 162, 234, 240);
                    high.LowColor = Color.FromArgb(alpha, 162, 234, 240);
                    high.HighColor = Color.FromArgb(alpha, 255, 255, 255);
                    break;
                case ColorSchemeType.Meadow:
                    low.LowColor = Color.FromArgb(alpha, 68, 128, 71);
                    low.HighColor = Color.FromArgb(alpha, 43, 91, 30);
                    high.LowColor = Color.FromArgb(alpha, 43, 91, 30);
                    high.HighColor = Color.FromArgb(alpha, 167, 220, 168);
                    break;
                case ColorSchemeType.Valley_Fires:
                    low.LowColor = Color.FromArgb(alpha, 164, 0, 0);
                    low.HighColor = Color.FromArgb(alpha, 255, 128, 64);
                    high.LowColor = Color.FromArgb(alpha, 255, 128, 64);
                    high.HighColor = Color.FromArgb(alpha, 255, 255, 191);
                    break;
                case ColorSchemeType.DeadSea:
                    low.LowColor = Color.FromArgb(alpha, 51, 137, 208);
                    low.HighColor = Color.FromArgb(alpha, 226, 227, 166);
                    high.LowColor = Color.FromArgb(alpha, 226, 227, 166);
                    high.HighColor = Color.FromArgb(alpha, 151, 146, 117);
                    break;
                case ColorSchemeType.Highway:
                    low.LowColor = Color.FromArgb(alpha, 51, 137, 208);
                    low.HighColor = Color.FromArgb(alpha, 214, 207, 124);
                    high.LowColor = Color.FromArgb(alpha, 214, 207, 124);
                    high.HighColor = Color.FromArgb(alpha, 54, 152, 69);
                    break;
                default:
                    break;
            }

            OnItemChanged(this);
        }
        private void Configure()
        {
            _shadedRelief = new ShadedRelief();
            _noDataColor = Color.Transparent;
            Scheme = new ColorScheme();
            if (_raster != null)
            {
                var Colors = _raster.CategoryColors();
                if (Colors != null && Colors.Length > 0)
                {   // Use colors that are built into the raster, e.g. GeoTIFF with palette
                    _isElevation = false;

					//use all colors instead of unique colors because unique colors are not allways set/correct
                    int lastColor = Colors[0].ToArgb(); //changed by jany_ 2015-06-02
                    int firstNr = 0;

					//group succeding values with the same color to the same category
                    for (int i = 1; i < Colors.Length; i++)
                    {
                        int hash = Colors[i].ToArgb();
                        if (hash != lastColor || i == Colors.Length - 1)
                        {
                            ICategory newCat = new ColorCategory(firstNr, i - 1, Colors[firstNr], Colors[firstNr]);
                            newCat.Range.MaxIsInclusive = true;
                            newCat.Range.MinIsInclusive = true;
                            newCat.LegendText = firstNr.ToString();
                            Scheme.AddCategory(newCat);
                            firstNr = i;
                            lastColor = hash;
                        }
                    }
                }
                else // Assume grid is elevation
                {
                    _elevationFactor = 1 / 3640000f;
                    _isElevation = true;
                    _extrusion = 1;
                    _scheme.ApplyScheme(ColorSchemeType.FallLeaves, _raster);
                }
            }
        }
Beispiel #9
0
        /// <summary>
        /// Applies the specified color scheme and uses the specified raster to define the
        /// minimum and maximum to use for the scheme.
        /// </summary>
        /// <param name="schemeType">ColorSchemeType</param>
        /// <param name="min">THe minimum value to use for the scheme</param>
        /// <param name="max">THe maximum value to use for the scheme</param>
        public void ApplyScheme(ColorSchemeType schemeType, double min, double max)
        {
            if (Categories == null)
            {
                Categories = new ColorCategoryCollection(this);
            }
            else
            {
                Categories.Clear();    
            }

            IColorCategory eqCat = null, low = null, high = null;
            if (min == max)
            {
                // Create one category
                eqCat = new ColorCategory(min, max) {Range = {MaxIsInclusive = true, MinIsInclusive = true}};
                eqCat.ApplyMinMax(EditorSettings);
                Categories.Add(eqCat);
            }
            else
            {
                // Create two categories
                low = new ColorCategory(min, (min + max) / 2) {Range = {MaxIsInclusive = true}};
                high = new ColorCategory((min + max) / 2, max) {Range = {MaxIsInclusive = true}};
                low.ApplyMinMax(EditorSettings);
                high.ApplyMinMax(EditorSettings);
                Categories.Add(low);
                Categories.Add(high);    
            }

            Color lowColor, midColor, highColor;
            int alpha = ByteRange(Convert.ToInt32(_opacity * 255F));
            switch (schemeType)
            {
                case ColorSchemeType.Summer_Mountains:
                    lowColor = Color.FromArgb(alpha, 10, 100, 10);
                    midColor = Color.FromArgb(alpha, 153, 125, 25);
                    highColor = Color.FromArgb(alpha, 255, 255, 255);
                    break;
                case ColorSchemeType.FallLeaves:
                    lowColor = Color.FromArgb(alpha, 10, 100, 10);
                    midColor = Color.FromArgb(alpha, 199, 130, 61);
                    highColor = Color.FromArgb(alpha, 241, 220, 133);
                    break;
                case ColorSchemeType.Desert:
                    lowColor = Color.FromArgb(alpha, 211, 206, 97);
                    midColor = Color.FromArgb(alpha, 139, 120, 112);
                    highColor = Color.FromArgb(alpha, 255, 255, 255);
                    break;
                case ColorSchemeType.Glaciers:
                    lowColor = Color.FromArgb(alpha, 105, 171, 224);
                    midColor = Color.FromArgb(alpha, 162, 234, 240);
                    highColor = Color.FromArgb(alpha, 255, 255, 255);
                    break;
                case ColorSchemeType.Meadow:
                    lowColor = Color.FromArgb(alpha, 68, 128, 71);
                    midColor = Color.FromArgb(alpha, 43, 91, 30);
                    highColor = Color.FromArgb(alpha, 167, 220, 168);
                    break;
                case ColorSchemeType.Valley_Fires:
                    lowColor = Color.FromArgb(alpha, 164, 0, 0);
                    midColor = Color.FromArgb(alpha, 255, 128, 64);
                    highColor = Color.FromArgb(alpha, 255, 255, 191);
                    break;
                case ColorSchemeType.DeadSea:
                    lowColor = Color.FromArgb(alpha, 51, 137, 208);
                    midColor = Color.FromArgb(alpha, 226, 227, 166);
                    highColor = Color.FromArgb(alpha, 151, 146, 117);
                    break;
                case ColorSchemeType.Highway:
                    lowColor = Color.FromArgb(alpha, 51, 137, 208);
                    midColor = Color.FromArgb(alpha, 214, 207, 124);
                    highColor = Color.FromArgb(alpha, 54, 152, 69);
                    break;
                default:
                    lowColor = midColor = highColor = Color.Transparent;
                    break;
            }

            if (eqCat != null)
            {
                eqCat.LowColor = eqCat.HighColor = lowColor;
            }
            else
            {
                Debug.Assert(low != null);
                Debug.Assert(high != null);

                low.LowColor = lowColor;
                low.HighColor = midColor;
                high.LowColor = midColor;
                high.HighColor = highColor;
            }

            OnItemChanged(this);
        }
Beispiel #10
0
        /// <summary>
        /// Applies the specified color scheme and uses the specified raster to define the
        /// minimum and maximum to use for the scheme.
        /// </summary>
        /// <param name="schemeType"></param>
        /// <param name="min">THe minimum value to use for the scheme</param>
        /// <param name="max">THe maximum value to use for the scheme</param>
        public void ApplyScheme(ColorSchemeType schemeType, double min, double max)
        {
            if (Categories == null)
            {
                Categories = new ColorCategoryCollection(this);
            }
            int alpha = ByteRange(Convert.ToInt32(_opacity * 255F));

            // this part should be overridden in the type specific version

            Categories.Clear();
            IColorCategory low = new ColorCategory(min, (min + max) / 2);

            low.Range.MaxIsInclusive = true;
            IColorCategory high = new ColorCategory((min + max) / 2, max);

            high.Range.MaxIsInclusive = true;
            low.ApplyMinMax(EditorSettings);
            high.ApplyMinMax(EditorSettings);
            Categories.Add(low);
            Categories.Add(high);
            switch (schemeType)
            {
            case ColorSchemeType.Summer_Mountains:
                low.LowColor   = Color.FromArgb(alpha, 10, 100, 10);
                low.HighColor  = Color.FromArgb(alpha, 153, 125, 25);
                high.LowColor  = Color.FromArgb(alpha, 153, 125, 25);
                high.HighColor = Color.FromArgb(alpha, 255, 255, 255);
                break;

            case ColorSchemeType.FallLeaves:
                low.LowColor   = Color.FromArgb(alpha, 10, 100, 10);
                low.HighColor  = Color.FromArgb(alpha, 199, 130, 61);
                high.LowColor  = Color.FromArgb(alpha, 199, 130, 61);
                high.HighColor = Color.FromArgb(alpha, 241, 220, 133);
                break;

            case ColorSchemeType.Desert:
                low.LowColor   = Color.FromArgb(alpha, 211, 206, 97);
                low.HighColor  = Color.FromArgb(alpha, 139, 120, 112);
                high.LowColor  = Color.FromArgb(alpha, 139, 120, 112);
                high.HighColor = Color.FromArgb(alpha, 255, 255, 255);
                break;

            case ColorSchemeType.Glaciers:
                low.LowColor   = Color.FromArgb(alpha, 105, 171, 224);
                low.HighColor  = Color.FromArgb(alpha, 162, 234, 240);
                high.LowColor  = Color.FromArgb(alpha, 162, 234, 240);
                high.HighColor = Color.FromArgb(alpha, 255, 255, 255);
                break;

            case ColorSchemeType.Meadow:
                low.LowColor   = Color.FromArgb(alpha, 68, 128, 71);
                low.HighColor  = Color.FromArgb(alpha, 43, 91, 30);
                high.LowColor  = Color.FromArgb(alpha, 43, 91, 30);
                high.HighColor = Color.FromArgb(alpha, 167, 220, 168);
                break;

            case ColorSchemeType.Valley_Fires:
                low.LowColor   = Color.FromArgb(alpha, 164, 0, 0);
                low.HighColor  = Color.FromArgb(alpha, 255, 128, 64);
                high.LowColor  = Color.FromArgb(alpha, 255, 128, 64);
                high.HighColor = Color.FromArgb(alpha, 255, 255, 191);
                break;

            case ColorSchemeType.DeadSea:
                low.LowColor   = Color.FromArgb(alpha, 51, 137, 208);
                low.HighColor  = Color.FromArgb(alpha, 226, 227, 166);
                high.LowColor  = Color.FromArgb(alpha, 226, 227, 166);
                high.HighColor = Color.FromArgb(alpha, 151, 146, 117);
                break;

            case ColorSchemeType.Highway:
                low.LowColor   = Color.FromArgb(alpha, 51, 137, 208);
                low.HighColor  = Color.FromArgb(alpha, 214, 207, 124);
                high.LowColor  = Color.FromArgb(alpha, 214, 207, 124);
                high.HighColor = Color.FromArgb(alpha, 54, 152, 69);
                break;

            default:
                break;
            }

            OnItemChanged(this);
        }