我想阅读Arc / Info二进制网格,并使用GDAL的C#绑定将它们转换为其他图像格式。我从here安装了FWTools 2.4.7和当前二进制文件(MSVC2010(Win64)-stable)。然后我开始测试作为FWTools一部分的示例C#程序,特别是GDALRead.cs和GDALReadDirect.cs。当我使用演示数据集utm.tif
时,一切正常。
然后我使用ArcMap 10(转换工具 - 转栅格 - 栅格转换为其他格式)将utm.tif转换为Arc / Info二进制网格格式。当我尝试使用GDALRead.cs
或GDALReadDirect.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 :(得分:0)
GDALReadDirect.cs
有一个名为SaveBitMapDirect
的错误方法,首先检查可用的颜色解释,然后检查频段数。将文件转换为Arc / Info二进制网格格式后,有关颜色解释的信息将丢失,因此只有程序检查可用波段数并返回错误消息。如果修改第157行,SaveBitMapDirect
适用于所描述的案例:
if (redBand.GetRasterColorInterpretation() == ColorInterp.GCI_GrayIndex || redBand.GetRasterColorInterpretation() == ColorInterp.GCI_Undefined)
这不是一般修复,仅针对当前问题。