[gdal-dev] Trouble with GDALAutoCreateWarpedVRT and No data values

Kyle Shannon kyle at pobox.com
Mon Jun 10 18:20:31 PDT 2013


Jesse,

i believe I've run into this before.  The GDALWarpOptions has a
member, padfDstNoDataReal.  It is an array  of doubles nBands in size.
 Create that, fill it in with your no data values and set the Warp
Option INIT_DEST to NO_DATA:

....
        psWarpOptions = GDALCreateWarpOptions();

        int nBandCount = srcDS->GetRasterCount();

        psWarpOptions->nBandCount = nBandCount;

        psWarpOptions->padfDstNoDataReal =
            (double*) CPLMalloc( sizeof( double ) * nBandCount );

       double dfNoData = -9999.0;

       for( int b = 0;b < srcDS->GetRasterCount();b++ )
       {
            psWarpOptions->padfDstNoDataReal[b] = dfNoData;
        }

        psWarpOptions->papszWarpOptions =
            CSLSetNameValue( psWarpOptions->papszWarpOptions,
                            "INIT_DEST", "NO_DATA" );

        wrpDS = (GDALDataset*) GDALAutoCreateWarpedVRT( srcDS, pszSrcWkt,
                                                        pszDstWkt,
                                                        GRA_NearestNeighbour,
                                                        1.0, psWarpOptions );

...

That seemed to work for me, hopefully it puts you on the right track.

kss

On Mon, Jun 10, 2013 at 6:17 PM, Jesse Crocker <jesse at gaiagps.com> wrote:
> Hello List,
> Im having some trouble with the C api, that I assume is do my failure to understand some part of it.
> What I'm trying to do: Load a BSB raster file, apply a cutline to the file, and warp it into a north-up projection.  Im doing additional transformations to it after that, but right now I'm stuck trying to get areas outside of the cutline to be transparent instead of black.
>
> An abbreviated version of what I'm doing now:
>
>     sourceDataset = GDALOpen(imageFilePath.UTF8String, GA_ReadOnly );
>   GDALWarpOptions *warpOptions = GDALCreateWarpOptions();
>   OGRGeometryH clipGeometry;
>     OGRErr polyStatus = OGR_G_CreateFromWkt(&pszWkt, spatialRef, &clipGeometry);
>     if(polyStatus == CE_None) {
>       warpOptions->hCutline = clipGeometry;
>     }
>   warpedDataset = GDALAutoCreateWarpedVRT(sourceDataset,
>                                           NULL,
>                                           NULL,
>                                           GRA_NearestNeighbour,
>                                           0.0,
>                                           warpOptions);
>
> The source data does not have a no data value, i've tried setting one and adding an entry to the color palette before calling GDALAutoCreateWarpedVRT, and settings the same value in the VRT but that had no effect.
>
> Any suggestions for the right way to do this?  Am I just setting the no_data value incorrectly, or is this a situation that requires a mask band?  And if it does require a mask band is there an easy way to create that from a cutline?
>
> Thanks,
> Jesse
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev


More information about the gdal-dev mailing list