0

我想阅读 Arc/Info Binary Grids 并使用 GDAL 的 C# 绑定将它们转换为其他图像格式。我从这里安装了 FWTools 2.4.7 和当前的二进制文件(MSVC2010 (Win64) -stable)。然后我开始测试作为 FWTools 一部分的示例 C# 程序,尤其是 GDALRead.cs 和 GDALReadDirect.cs。当我使用演示数据集utm.tif时,一切正常。

然后,我使用 ArcMap 10(转换工具 - 转栅格 - 栅格转其他格式)将 utm.tif 转换为 Arc/Info Binary Grid 格式。当我尝试使用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 二进制网格转换为其他图像格式的任何提示表示赞赏。

4

1 回答 1

0

GDALReadDirect.cs有一个名为 的错误方法SaveBitMapDirect,它首先检查可用的颜色解释,然后检查波段数。将文件转换为 Arc/Info 二进制网格格式后,有关颜色解释的信息会丢失,因此程序才会检查可用波段的数量并返回错误消息。SaveBitMapDirect如果编辑第 157 行,则适用于所描述的情况:

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

这不是一般的解决方法,只针对眼前的问题。

于 2013-05-08T21:59:41.057 回答