Skip to main content

2 posts tagged with "gdal"

View All Tags

· 2 min read
litan

通常情况我们使用ArcMap打开一张非常大的影像时,都会提示是否生成金字塔文件以便于后续影像的快速绘制和缩放。

但当影像过大时,使用ArcMap的默认选项已经无法成功创建金字塔文件,此时就需要调用GDAL工具手动生成金字塔文件。

指令如下所示,

gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE --config BIGTIFF_OVERVIEW YES dem.tif 2 4 8 16

但是当影像非常大时(个人经验时超过20Gb),使用上面的指令生成金字塔文件会在70%左右报错,此时就需要将指令拆分,每次只生成一个缩放比例的金字塔,多重复几次即可。

指令如下所示,

gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE --config BIGTIFF_OVERVIEW YES dem.tif 16
gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE --config BIGTIFF_OVERVIEW YES dem.tif 8
gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE --config BIGTIFF_OVERVIEW YES dem.tif 4
gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE --config BIGTIFF_OVERVIEW YES dem.tif 2

16倍缩放金字塔应该是数据导入时的缩略图比例,所以当我们成功生成16倍的金字塔时,就可以使用ArcMap读取影像,并快速将影像的缩略图绘制到视图中。

· One min read
litan

地理编码后影像的四个角点一般都有“黑边”(对于float以上数据,显示为NoData,值为NAN),在arcgis中显示时非常影响观感,需要消除。

使用gdal_translate.exe工具,可以有效消除“黑边”,命令如下:

gdal_translate.exe img_input.tif img_output.tif -a_nodata 0

该命令可以将img_input.tif中所有值为NoData的值转换为0,并且为影像添加数据NoData Value=0

转换完成后,再次使用arcmap加载该影像,即可得到无“黑边”的地理编码后影像。

伪代码:

GDALDataset* p_ds = static_cast<GDALDataset*>(GDALOpen("",GA_Update));
int bands = p_ds->GetRasterCount();
for(int b = 1; b<bands; b++)
{
GDALRasterBand* rb = p_ds->GetRasterBnad(b);
rb->setNoDataValue(0);
}
GDALClose(p_ds);