示例#1
0
        public static OutputBand <double> NewDoubleBand(GdalBand gdalBand,
                                                        PixelBand pixelBand)
        {
            RasterBandWriter <double> rasterBandWriter = RasterBandWriters.NewDoubleWriter(gdalBand);

            switch (pixelBand.TypeCode)
            {
            case TypeCode.Byte:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <byte, double>(pixelBand, Convert.ToDouble)));

            case TypeCode.SByte:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <sbyte, double>(pixelBand, Convert.ToDouble)));

            case TypeCode.UInt16:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <ushort, double>(pixelBand, Convert.ToDouble)));

            case TypeCode.Int16:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <short, double>(pixelBand, Convert.ToDouble)));

            case TypeCode.UInt32:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <uint, double>(pixelBand, Convert.ToDouble)));

            case TypeCode.Int32:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <int, double>(pixelBand, Convert.ToDouble)));

            case TypeCode.Single:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <float, double>(pixelBand, Convert.ToDouble)));

            case TypeCode.Double:
                return(new OutputBand <double>(rasterBandWriter, new PixelBandGetter <double, double>(pixelBand, Convert.ToDouble)));

            default:
                throw new ArgumentException("pixelBand.TypeCode is not byte, sbyte, ushort, short, uint, int, float, double");
            }
        }
示例#2
0
        public static IOutputBand NewOutputBand(DataType dataType,
                                                GdalBand gdalBand,
                                                PixelBand pixelBand)
        {
            switch (dataType)
            {
            case DataType.GDT_Byte:
                return(NewByteBand(gdalBand, pixelBand));

            case DataType.GDT_Int16:
                return(NewShortBand(gdalBand, pixelBand));

            case DataType.GDT_Int32:
                return(NewIntBand(gdalBand, pixelBand));

            case DataType.GDT_Float32:
                return(NewFloatBand(gdalBand, pixelBand));

            case DataType.GDT_Float64:
                return(NewDoubleBand(gdalBand, pixelBand));

            default:
                throw new ArgumentException("dataType is not byte, short, int, float, double");
            }
        }
示例#3
0
        public static OutputBand <int> NewIntBand(GdalBand gdalBand,
                                                  PixelBand pixelBand)
        {
            RasterBandWriter <int> rasterBandWriter = RasterBandWriters.NewIntWriter(gdalBand);

            switch (pixelBand.TypeCode)
            {
            case TypeCode.Byte:
                return(new OutputBand <int>(rasterBandWriter, new PixelBandGetter <byte, int>(pixelBand, Convert.ToInt32)));

            case TypeCode.SByte:
                return(new OutputBand <int>(rasterBandWriter, new PixelBandGetter <sbyte, int>(pixelBand, Convert.ToInt32)));

            case TypeCode.UInt16:
                return(new OutputBand <int>(rasterBandWriter, new PixelBandGetter <ushort, int>(pixelBand, Convert.ToInt32)));

            case TypeCode.Int16:
                return(new OutputBand <int>(rasterBandWriter, new PixelBandGetter <short, int>(pixelBand, Convert.ToInt32)));

            case TypeCode.UInt32:
                return(new OutputBand <int>(rasterBandWriter, new PixelBandGetter <uint, int>(pixelBand, Convert.ToInt32)));

            case TypeCode.Int32:
                return(new OutputBand <int>(rasterBandWriter, new PixelBandGetter <int, int>(pixelBand, Convert.ToInt32)));

            default:
                throw new ArgumentException("pixelBand.TypeCode is not byte, sbyte, ushort, short, uint, int");
            }
        }
        public static InputBand <short> NewShortBand(GdalBand gdalBand,
                                                     PixelBand pixelBand)
        {
            RasterBandReader <short> rasterBandReader = RasterBandReaders.NewShortReader(gdalBand);

            switch (pixelBand.TypeCode)
            {
            case TypeCode.UInt16:
                return(new InputBand <short>(rasterBandReader, new PixelBandSetter <ushort, short>(pixelBand, Convert.ToUInt16)));

            case TypeCode.Int16:
                return(new InputBand <short>(rasterBandReader, new PixelBandSetter <short, short>(pixelBand, Convert.ToInt16)));

            case TypeCode.UInt32:
                return(new InputBand <short>(rasterBandReader, new PixelBandSetter <uint, short>(pixelBand, Convert.ToUInt32)));

            case TypeCode.Int32:
                return(new InputBand <short>(rasterBandReader, new PixelBandSetter <int, short>(pixelBand, Convert.ToInt32)));

            case TypeCode.Single:
                return(new InputBand <short>(rasterBandReader, new PixelBandSetter <float, short>(pixelBand, Convert.ToSingle)));

            case TypeCode.Double:
                return(new InputBand <short>(rasterBandReader, new PixelBandSetter <double, short>(pixelBand, Convert.ToDouble)));

            default:
                throw new ArgumentException("pixelBand.TypeCode is not ushort, short, uint, int, float, double");
            }
        }
        public static InputBand <double> NewDoubleBand(GdalBand gdalBand,
                                                       PixelBand pixelBand)
        {
            RasterBandReader <double> rasterBandReader = RasterBandReaders.NewDoubleReader(gdalBand);

            switch (pixelBand.TypeCode)
            {
            case TypeCode.Double:
                return(new InputBand <double>(rasterBandReader, new PixelBandSetter <double, double>(pixelBand, Convert.ToDouble)));

            default:
                throw new ArgumentException("pixelBand.TypeCode is not double");
            }
        }
示例#6
0
        public static OutputBand <byte> NewByteBand(GdalBand gdalBand,
                                                    PixelBand pixelBand)
        {
            RasterBandWriter <byte> rasterBandWriter = RasterBandWriters.NewByteWriter(gdalBand);

            switch (pixelBand.TypeCode)
            {
            case TypeCode.Byte:
                return(new OutputBand <byte>(rasterBandWriter, new PixelBandGetter <byte, byte>(pixelBand, Convert.ToByte)));

            case TypeCode.SByte:
                return(new OutputBand <byte>(rasterBandWriter, new PixelBandGetter <sbyte, byte>(pixelBand, Convert.ToByte)));

            default:
                throw new ArgumentException("pixelBand.TypeCode is not byte or sbyte");
            }
        }
        public static InputBand <float> NewFloatBand(GdalBand gdalBand,
                                                     PixelBand pixelBand)
        {
            RasterBandReader <float> rasterBandReader = RasterBandReaders.NewFloatReader(gdalBand);

            switch (pixelBand.TypeCode)
            {
            case TypeCode.Single:
                return(new InputBand <float>(rasterBandReader, new PixelBandSetter <float, float>(pixelBand, Convert.ToSingle)));

            case TypeCode.Double:
                return(new InputBand <float>(rasterBandReader, new PixelBandSetter <double, float>(pixelBand, Convert.ToDouble)));

            default:
                throw new ArgumentException("pixelBand.TypeCode is not float or double");
            }
        }
示例#8
0
 /// <summary>
 /// Computes the size in bytes for a pixel band's data type.
 /// </summary>
 /// <returns>
 /// A <see cref="System.Int32"/>
 /// </returns>
 /// <exception cref="System.ArgumentException">Thrown if
 /// <paramref name="typeCode"/> is not Byte, SByte, Int16, UInt16,
 /// Int32, UInt32, Single or Double.
 /// </exception>
 public static int ComputeSize()
 {
     return(PixelBand.ComputeSize(System.Type.GetTypeCode(typeof(T))));
 }