[Gdal-dev] ColorTable in C#

Tamas Szekeres szekerest at gmail.com
Tue Nov 21 16:42:29 EST 2006


Hi,

When constructing the ColorTable you have to use the GDALPaletteInterp
constants as the parameter like:

ct_out = new ColorTable(gdalconst.GPI_RGB);

Here is the complete code:

public static void test(string file, string file_out)
    {
        gdal.AllRegister();

        Driver dv = null;
        Dataset ds = null, ds_out = null;
        Band ba = null, ba_out = null;
        ColorTable ct = null, ct_out = null;
        byte [] buffer;

        ds = gdal.Open(file, gdalconst.GA_ReadOnly);
        ba = ds.GetRasterBand(1);
        ct = ba.GetRasterColorTable();

        buffer = new byte [ds.RasterXSize * ds.RasterYSize];
        ba.ReadRaster(0, 0, ds.RasterXSize, ds.RasterYSize, buffer,
            ds.RasterXSize, ds.RasterYSize, 0, 0);

        dv = gdal.GetDriverByName("GTiff");

        ds_out = dv.Create(file_out, ds.RasterXSize, ds.RasterYSize,
            ds.RasterCount, ba.DataType, new string [] {});
        ba_out = ds_out.GetRasterBand(1);
        ct_out = new ColorTable(gdalconst.GPI_RGB);

        ba_out.WriteRaster(0, 0, ds.RasterXSize, ds.RasterYSize, buffer,
            ds.RasterXSize, ds.RasterYSize, 0, 0);

        for (int i = 0; i < ct.GetCount(); i++)
        {
            ColorEntry ce = null, ce_out = null;

            ce = ct.GetColorEntry(i);
            ce_out = new ColorEntry();

            ce_out.c1 = ce.c1;
            ce_out.c2 = ce.c2;
            ce_out.c3 = ce.c3;
            ce_out.c4 = ce.c4

            ct_out.SetColorEntry(i, ce_out);

            ce.Dispose();
            ce_out.Dispose();
        }

        ba_out.SetRasterColorTable(ct_out);
    }


Best Regards,

Tamas Szekeres







2006/11/21, Jean Michel PIERRET <jmp at geosys.com>:
>
> Hi,
>
> I'm using the CVS : "gdal-cvs-2006.11.21.tar.gz", I see well the new Class
> ColorEntry, but I still can't create a new ColorTable with 256 ColorEntry.
>
>
> public static void test(string file, string file_out)
> {
>         Driver dv = null;
>         Dataset ds = null, ds_out = null;
>         Band ba = null, ba_out = null;
>         ColorTable ct = null, ct_out = null;
>         byte [] buffer;
>
>         ds = gdal.Open(file, gdalconst.GA_ReadOnly);
>         ba = ds.GetRasterBand(1);
>         ct = ba.GetRasterColorTable();
>
>         buffer = new byte [ds.RasterXSize * ds.RasterYSize];
>         ba.ReadRaster(0, 0, ds.RasterXSize, ds.RasterYSize, buffer,
> ds.RasterXSize, ds.RasterYSize, 0, 0);
>
>         dv = gdal.GetDriverByName("GTiff");
>
>         ds_out = dv.Create(file_out, ds.RasterXSize, ds.RasterYSize,
> ds.RasterCount, ba.DataType, new string [] {});
>         ba_out = ds_out.GetRasterBand(1);
>     ct_out = new ColorTable(ct.GetCount());
>
>         ba_out.WriteRaster(0, 0, ds.RasterXSize, ds.RasterYSize, buffer,
> ds.RasterXSize, ds.RasterYSize, 0, 0);
>
>         for (int i = 0; i < ct.GetCount(); i++)
>         {
>                 ColorEntry ce = null, ce_out = null;
>
>                 ce = ct.GetColorEntry(i);
>                 ce_out = new ColorEntry();
>
>                 ce_out.c1 = ce.c1;
>                 ce_out.c2 = ce.c2;
>                 ce_out.c3 = ce.c3;
>                 ce_out.c4 = ce.c4;
>
>                 ct_out.SetColorEntry(i, ce_out);
>
>                 ce.Dispose();
>                 ce_out.Dispose();
>         }
>
>         ba_out.SetRasterColorTable(ct_out);
>
>         ct_out.Dispose();
>         ba_out.Dispose();
>         ds_out.Dispose();
>
>         ct.Dispose();
>         ba.Dispose();
>         ds.Dispose();
> }
>
> -----Message d'origine-----
> De: Tamas Szekeres [mailto:szekerest at gmail.com]
> Envoyé: lundi 20 novembre 2006 14:06
> Ŕ: Jean Michel PIERRET
> Cc: gdal-dev at lists.maptools.org
> Objet: Re: [Gdal-dev] ColorTable in C#
>
> Hi,
>
> I've just added the ColorEntry struct for the SWIG C# interface. Now you can
> use
>
> the ColorTable and ColorEntry classes along with
> Band.SetRasterColorTable and Band.GetRasterColorTable.
>
> Checkout the latest CVS and notify me how it works.
>
>
> Best Regards,
>
> Tamas Szekeres
>
>
>
> 2006/11/20, Jean Michel PIERRET <jmp at geosys.com>:
> >
> >
> >
> >
> > Hi,
> >
> >
> >
> > How can I create a new ColorTable in C# for a new image.
> >
> >
> >
> > Thank.
> >
> >
> >
> > PIERRET Jean michel.
> >
> >
> >
> >
> > _______________________________________________
> > Gdal-dev mailing list
> > Gdal-dev at lists.maptools.org
> > http://lists.maptools.org/mailman/listinfo/gdal-dev
> >
> >
>
>




More information about the Gdal-dev mailing list