public override object GetStretcher(int bandNo)
        {
            object stratcher = RgbStretcherFactory.GetStretcher("MWRIX.SWE");

            if (stratcher == null)
            {
                stratcher = RgbStretcherFactory.CreateStretcher(enumDataType.Byte, 0, 255);
            }
            return(stratcher);
        }
 public override object GetStretcher(int bandNo)
 {
     if (bandNo == 5)
     {
         return(RgbStretcherFactory.CreateStretcher(enumDataType.Float, 0, 4));
     }
     else
     {
         return(base.GetStretcher(bandNo));
     }
 }
        private object TryGetDefaultStretcher(IRasterBand band)
        {
            double minValue, maxValue;

            if (_dataType == enumDataType.Byte)
            {
                minValue = 0;
                maxValue = 255;
            }
            else
            {
                band.ComputeMinMax(out minValue, out maxValue, true, null);
            }

            return(RgbStretcherFactory.CreateStretcher(_dataType, minValue, maxValue));
        }
        private object[] GetStretcher(enumDataType dataType, RasterQuickStatResult[] resutls, float percent)
        {
            int bandCount = resutls.Length;
            //x%像元临界个数
            int criticalCount = (int)(percent * resutls[0].HistogramResult.PixelCount);

            object[] sts = new object[bandCount];
            //low
            for (int i = 0; i < bandCount; i++)
            {
                //边界DN值
                double lowValue = 0, heightValue = 0;
                //累计个数
                double accCount = 0;
                int    bucks    = resutls[i].HistogramResult.ActualBuckets;
                //lowValue
                for (int k = 0; k < bucks; k++)
                {
                    if (accCount > criticalCount)
                    {
                        break;
                    }
                    accCount += resutls[i].HistogramResult.Items[k];
                    lowValue  = resutls[i].HistogramResult.MinDN + k * resutls[i].HistogramResult.Bin;
                }
                //HighValue
                accCount = 0;
                for (int k = bucks - 1; k >= 0; k--)
                {
                    if (accCount > criticalCount)
                    {
                        break;
                    }
                    accCount   += resutls[i].HistogramResult.Items[k];
                    heightValue = resutls[i].HistogramResult.MinDN + k * resutls[i].HistogramResult.Bin;
                }
                //
                sts[i] = RgbStretcherFactory.CreateStretcher(dataType, lowValue, heightValue);
            }
            return(sts);
        }