[gdal-dev] Setting "INIT_DEST" to nan on windows
Even Rouault
even.rouault at mines-paris.org
Thu May 5 14:21:59 EDT 2011
Le mercredi 04 mai 2011 00:40:42, Kyle Shannon a écrit :
> I am using AutoCreateWarpedVRT to warp a dataset. I grab the the source
> nodata for a band using
>
> double noData = poBand->GetNoDataValue( &pbSuccess );
>
> which returns 1.#QNAN00000000... on windows.
>
> I then try to set the INIT_DEST with this using
>
> psWarpOptions->papszWarpOptions =
> CSLSetNameValue( psWarpOptions->papszWarpOptions,
> "INIT_DEST", CPLSPrintf( "%lf", noData ) );
>
> This works on linux when it returns nan(0x8000000000000), but not on
> windows, is there a different string I need to set in the warp options?
Those NaN values are generally a nighmare to deal with...
But a quick look at :
const char *pszInitDest = CSLFetchNameValue( psOptions->papszWarpOptions,
"INIT_DEST" );
if( pszInitDest != NULL && !EQUAL(pszInitDest, "") )
{
char **papszInitValues =
CSLTokenizeStringComplex( pszInitDest, ",", FALSE, FALSE );
int nInitCount = CSLCount(papszInitValues);
for( iBand = 0; iBand < psOptions->nBandCount; iBand++ )
{
double adfInitRealImag[2];
GByte *pBandData;
const char *pszBandInit =
papszInitValues[MIN(iBand,nInitCount-1)];
if( EQUAL(pszBandInit,"NO_DATA")
&& psOptions->padfDstNoDataReal != NULL )
{
adfInitRealImag[0] = psOptions->padfDstNoDataReal[iBand];
adfInitRealImag[1] = psOptions->padfDstNoDataImag[iBand];
}
else
{
CPLStringToComplex( pszBandInit,
adfInitRealImag + 0, adfInitRealImag + 1);
}
Make me believe that one way is to assign the value(s) of the
padfDstNoDataReal[] array of psWarpOptions with the noData (NAN) value and set
INIT_DEST to the "NO_DATA" string.
>
> Thanks.
>
>
> /**
> *
> * Kyle Shannon
> * ksshannon at gmail.com
> *
> */
More information about the gdal-dev
mailing list