2013-05-07 43 views
0

我想讀取Arc/Info Binary Grids並使用GDAL的C#綁定將它們轉換爲其他圖像格式。我從here安裝了FWTools 2.4.7和當前的二進制文件(MSVC2010(Win64)--stable)。然後我開始測試屬於FWTools的示例C#程序,尤其是GDALRead.cs和GDALReadDirect.cs。當我使用演示數據集utm.tif時,這一切都很好。支持通過C#的Arc/Info Binary Grid格式GDAL的綁定

然後,我使用ArcMap 10(轉換工具 - 轉柵格 - 柵格轉換爲其他格式)將utm.tif轉換爲Arc/Info二進制柵格格式。當我嘗試使用GDALRead.csGDALReadDirect.cs我收到以下錯誤信息:

GDALRead.cs:

Using driver Arc/Info Binary Grid 
Band 1 : 
DataType: GDT_Int16 
Size (512,512) 
PaletteInterp: GCI_Undefined 
    OverView 0 : 
    DataType: GDT_Int16 
    Size (256,256) 
    PaletteInterp: GCI_GrayIndex 
    OverView 1 : 
    DataType: GDT_Int16 
    Size (128,128) 
    PaletteInterp: GCI_GrayIndex 
Non RGB images are not supported by this sample! ColorInterp = GCI_Undefined 

GDALReadDirect.cs:

Using driver Arc/Info Binary Grid 
Band 1 : 
    DataType: GDT_Int16 
    Size (512,512) 
    PaletteInterp: GCI_Undefined 
     OverView 0 : 
     DataType: GDT_Int16 
     Size (256,256) 
     PaletteInterp: GCI_GrayIndex 
     OverView 1 : 
     DataType: GDT_Int16 
     Size (128,128) 
     PaletteInterp: GCI_GrayIndex 
The number of the raster bands is not enough to run this sample 

此行爲是對我來說有點出人意料,因爲我並沒有改變數據集,我只是將它轉換成新的格式。任何有關此行爲的原因以及我如何通過C#使用GDAL將ArcInfo二進制網格轉換爲其他圖像格式的暗示。

回答

0

GDALReadDirect.cs有一個錯誤的方法,名爲SaveBitMapDirect,首先檢查可用的顏色解釋,然後檢查帶的數量。文件轉換爲Arc/Info二進制格網格式後,有關Color解釋的信息將丟失,因此只有程序檢查可用帶的數量並返回錯誤消息。 SaveBitMapDirect作品所描述的情況下,如果157線被編輯:

if (redBand.GetRasterColorInterpretation() == ColorInterp.GCI_GrayIndex || redBand.GetRasterColorInterpretation() == ColorInterp.GCI_Undefined) 

這不是一般的修復,只爲眼前的問題。