AnsweredAssumed Answered

Using C# with ArcGISRuntime, how do I use a StretchRenderer to make a grayscale color ramp? 

Question asked by reneecammarere on May 2, 2017

Using C# with ArcGISRuntime I need to display raster data on a map.  Right now I have the following code that successfully displays an elevation raster (DEM) on the map.  However, I have other rasters that are not displayed correctly using this color ramp.  When I bring them into Arc Map, they are displayed the way I want them, as grayscale images.  How can I define a StretchRenderer that would be a grayscale color ramp, that would make these rasters appear the same as they do when bringing them into Arc Map?

        private void AddRasterLayer(string rasterPath, string id)
        {           
            var newRaster = new Raster(rasterPath);           
            var newRasterLayer = new RasterLayer(newRaster);
            newRasterLayer.Id = id;

            // Code to get the min and max values for the MinMaxStretchParameters object
            double[,] rasterArray = Conversions.RasterToArray(rasterPath);
            double max = SoilMoisturePreprocessing.Max2d(rasterArray);
            double[] minVals = { 0 };// 0
            double[] maxVals = { (int)max + 1 };
            MinMaxStretchParameters minMaxParams = new MinMaxStretchParameters(minVals, maxVals);

            ColorRamp elevationColorRamp = ColorRamp.Create(PresetColorRampType.Elevation);
            var rendrr = new StretchRenderer(minMaxParams, null, true, elevationColorRamp);
           
            newRasterLayer.Renderer = rendrr;
            newRasterLayer.Opacity = 0.6;

            var mapViewModel = ServiceLocator.Current.GetInstance<MapViewModel>();
            mapViewModel.Map.OperationalLayers.Add(newRasterLayer);
        }

Outcomes