/// <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); }
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); } } }
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); } } }
/// <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); }
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); } } }
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(); }
/// <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); }
/// <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); }