2012-02-28 649 views
2

我試圖構建馬賽克,並且我依賴NoDataValue功能將圖像的某些部分視爲透明。 但是,看起來GDAL不能按預期工作。GDAL似乎忽略NoDataValue

我也使用VRT數據集和gdal_translate創造了一個非常簡單的測試案例 - 我也得到了相同的結果(即 - 第二圖像繪製在第一圖象,忽略「透明區域」)

我有到的背景黑色與白色標記(不同在每個文件)100X100圖像文件(黑色確切地說是等於0) 我建立一個簡單的VRT文件:

<VRTDataset rasterXSize="100" rasterYSize="100"> 
    <VRTRasterBand dataType="Byte" band="1"> 
    <ColorInterp>Gray</ColorInterp> 
    <SimpleSource> 
     <SourceFilename relativeToVRT="1">a1.tif</SourceFilename> 
     <SourceBand>1</SourceBand> 
     <SrcRect xOff="0" yOff="0" xSize="100" ySize="100"/> 
     <DstRect xOff="0" yOff="0" xSize="100" ySize="100"/> 
     <HideNoDataValue>1</HideNoDataValue> 
     <NoDataValue>0</NoDataValue> 
    </SimpleSource> 
    <SimpleSource> 
     <SourceFilename relativeToVRT="1">a2.tif</SourceFilename> 
     <SourceBand>1</SourceBand> 
     <SrcRect xOff="0" yOff="0" xSize="100" ySize="100"/> 
     <DstRect xOff="0" yOff="0" xSize="100" ySize="100"/> 
     <HideNoDataValue>1</HideNoDataValue> 
     <NoDataValue>0</NoDataValue> 
    </SimpleSource> 
    </VRTRasterBand> 
</VRTDataset> 

和我運行命令:

gdal_translate mosaic.vrt mosaic.tif 

結果是相同的圖像a2.tif,而不是被和a1.tif組合a2.tif

我使用GDAL 1.8和1.9

任何想法的錯誤?

回答

1

我在gdal-dev列表中的答案從即使魯奧

幾個錯誤:

  1. NoDataValueHideNoDataValue元素只有VRTRasterBand元素下有效,不SimpleSource

  2. 您想將SimpleSource更改爲ComplexSource,並在其中添加<NODATA>0</NODATA>元素。 (嗯,基本上重新命名當前的NoDataValueNODATA

+1

嗨,我編輯您的文章,因爲''部分失蹤了。反正就是可以看看你的最後'vrt'?我嘗試了'HideNoData','NoDataValue'和'NODATA'的幾種組合,但是沒有任何變化 – 2014-01-21 13:30:33

+0

對不起,但我無法再訪問這些文件 – 2014-01-21 14:00:54

+0

Ops,這太遺憾了。 – 2014-01-21 14:17:37