[gdal-dev] GDAL contouring problem

Frank Warmerdam warmerdam at pobox.com
Sun Nov 28 23:24:56 EST 2010

Ole Nielsen wrote:
> I am posting this again without test files attached due the 50K size 
> limit. Anyone who wants to see them, please contact me directly.
> --
> We have observed interesting anomaly with gdal_contour when one of the 
> fixed levels is zero.
> If the zero contour is expressed as 0.0 (or indeed 0.0000) gdal_contour 
> replies with the standard Usage message (see below). If the zero contour 
> is expressed as the integer 0 (or 0.00000001) it works and produces the 
> expected contours.


The gdal_contour program has some rather hokey heuristics to try and
recognise the end of the list of contour levels.  The code looks like:

         else if( EQUAL(argv[i],"-fl") && i < argc-1 )
             while( i < argc-1
                    && nFixedLevelCount
                              < (int)(sizeof(adfFixedLevels)/sizeof(double))
                    && (atof(argv[i+1]) != 0 || EQUAL(argv[i+1],"0"))
                    && !EQUAL(argv[i+1], "-3d"))
                 adfFixedLevels[nFixedLevelCount++] = atof(argv[++i]);

So basically, it assumes everything is a "level" until something that
has a numeric value of 0 is encounter that isn't the specific string
"0".  So your analysis of the problem is essentially correct, but it is
more or less intentional as we try to support a list of levels with no
explicit "end of list" marker in the arguments to the command.

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent

More information about the gdal-dev mailing list