Tuesday, 11 December 2018

gdal - gdal_translate Bilinear Interpolation


I am working with the v2.3.3 NuGet of GDAL by Tamas Szekeres for the .NET environment, and can successfully open the etopo1_ice_g_f4.flt raster to cut basic tiles.


The problem I am having is that even when I apply the -r bilinear option to my translation options, the generated image remains pixelated.


Specifically, I make the following calls in code to get the initial raster (simplifying the file names for this example):


GdalConfiguration.ConfigureGdal();

var etopoPath = @"F:\testing\etopo1_ice_g_f4.flt";
var colorPath = @"F:\testing\color.txt";
var pngPath = @"F:\testing\tile.png";
var tifPath = @"F:\testing\tile.tif";


var raster = Gdal.Open(etopoPath, Access.GA_ReadOnly);

I then set the appropriate projection extents, which will produce a 256x256 tile (in OpenMaps, it would be tile x = 306, tile y = 389, zoom = 10):


// shows us tile 306 389 z10
const double lonWest = -72.42;
const double lonEast = -72.02;
const double latNorth = 39.64;
const double latSouth = 39.24;


I set up the gdal_translate options to include bilinear interpolation:


var translateOptions = new[] {
"-of", "GTiff",
"-projwin", $"{lonWest}", $"{latNorth}", $"{lonEast}", $"{latSouth}",
"-outsize", "256 256",
"-r", "bilinear",
"-q"
};

Gdal.wrapper_GDALTranslate(tifPath, raster, new GDALTranslateOptions(translateOptions), null, null);


And finally, process the GeoTIFF as a color-relief tile:


var demOptions = new[] {
"-of", "PNG",
"-q"
};

var tifRaster = Gdal.Open(tifPath, Access.GA_ReadOnly);
Gdal.wrapper_GDALDEMProcessing(pngPath, tifRaster, "color-relief", colorPath, new GDALDEMProcessingOptions(demOptions), null, null);


And it works, producing the following PNG image:


Pixelated tile


Now, the problem is that this does not seem to have been interpolated. The same image is produced even when -r bilinear is removed from the options.


Using the same elevation data (etopo1), and doing my own bilinear interpolation processing, I get this image:


Smooth tile


I would like to not have to get the raw elevation data and do my own bilinear interpolation... I'd rather have the image properly interpolated coming out of gdal_translate.


So, am I missing something?




No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...