os.chdir(r'E:\pycode\DATA\osgeopy-data\Switzerland') ds = gdal.Open('dem_class2.tif') band = ds.GetRasterBand(1) band.SetNoDataValue(-1) rat = gdal.RasterAttributeTable() rat.CreateColumn('Value', gdal.GFT_Integer, gdal.GFU_Name) rat.CreateColumn('Count', gdal.GFT_Integer, gdal.GFU_PixelCount) rat.CreateColumn('Elevation', gdal.GFT_String, gdal.GFU_Generic) rat.SetRowCount(6) rat.WriteArray(range(6), 0) rat.WriteArray(band.GetHistogram(-0.5, 5.5, 6, False, False), 1) rat.SetValueAsString(1, 2, '0 - 800') rat.SetValueAsString(2, 2, '800 - 1300') rat.SetValueAsString(3, 2, '1300 - 2000') rat.SetValueAsString(4, 2, '2000 - 2600') rat.SetValueAsString(5, 2, '2600 +') band.SetDefaultRAT(rat) band.SetNoDataValue(0) del band, ds

生成属性表后,在同名文件.tif.aux中会以XML形式记录(部分):

<GDALRasterAttributeTable>
      <FieldDefn index="0">
        <Name>Value</Name>
        <Type>0</Type>
        <Usage>2</Usage>
      </FieldDefn>
      <FieldDefn index="1">
        <Name>Count</Name>
        <Type>0</Type>
        <Usage>1</Usage>
      </FieldDefn>
      <FieldDefn index="2">
        <Name>Elevation</Name>
        <Type>2</Type>
        <Usage>0</Usage>
      </FieldDefn>
      <Row index="0">
        <F>0</F>
        <F>55467</F>
        <F>NoData</F>
      <Row index="1">
        <F>1</F>
        <F>27213</F>
        <F>0 - 800</F>
      <Row index="2">
        <F>2</F>
        <F>12986</F>
        <F>800 - 1300</F>
      <Row index="3">
        <F>3</F>
        <F>13642</F>
        <F>1300 - 2000</F>
      <Row index="4">
        <F>4</F>
        <F>10632</F>
        <F>2000 - 2600</F>
      <Row index="5">
        <F>5</F>
        <F>5414</F>
        <F>2600 +</F>
    </GDALRasterAttributeTable>
提示:这里描述项目中遇到的问题: 直接对 栅格数据 建立 属性 失败: 方法一:一些网友建议的,计算唯一值,达到建立 属性 目的,但是建立之后 属性 还是灰色的,不能点开。 但是两种方法均告失败! 给 栅格数据 建立 属性 失败的原因: 点击错误代码,查看错误原因: 不能对多波段数据建立 属性 也不能对浮点型数据建立 属性 查看数据发现只有单个波段,怀 导出后的数据可以计算 属性 ,两种方式,一种是利用工具进行;另外一种是右键 属性 后,找到颜色条显示,默认是拉伸,选择唯一值显示,即可计算 属性 ,关闭后即可看到 属性 。 *****需要注意的是,你直接转出时,会将你原先的浮点型数据四舍五入处理,因此,如果你需要保留2.. 2、在Data Management Tools(数据管理工具)-&gt;Raster(栅格)-&gt;Raster Properties(栅格 属性 )中选择Build Raster Attribute Table(创建栅... 1、TIFF 栅格数据 与GRID 栅格数据 的相互转换方法。 1)加载TIFF 栅格数据 。 从目录中可以看到,image.tif文件具有3个单波段 栅格数据 ,即R、G、B波段;直接将image图层拖入视图区即可加载该TIFF数据;可单独加载其中某个波段。 2)TIFF转GRID。 TIFF 栅格数据 包含有3个波段,要将TIFF 栅格数据 转GRID 栅格数据 ,需将TIFF的R、G、B波段依次转为GRID 栅格数据 。右击已加载的R波段图层,打开【数据】|【导出数据】工具,位置指定到“ex21-1”文件夹,导出的 栅格数据 名称设置 有时候处理后的土地利用类型数据没有 属性 ,右击图像我们可以查看到 属性 是黑色的 但他不是浮点数值,一个值对应一种类型,可采用下面的方法: 1.打开工具箱中的栅格创建 属性 工具 Data Management Tools(数据管理工具)->Raster(栅格)->Raster Properties(栅格 属性 )中选择Build Raster Attribute Table(创建栅格 属性 ) 2.选中 栅格数据 ,即可创建栅格 属性 3.结果如图所示 如果是浮点型数据,可以通过下面 from arcpy import env arcpy.env.workspace = r"D:\shuju\MCD64A1_BatchExtractByMask\BatchExtractByMask" rasterList = arcpy.ListRasters("*", "TIF") for raster in gdal非常简答,就包括3部分,org矢量处理,gdal栅格处理,常用的1些工具集。记住处理的都是一些类,栅格类,数量数据集类,我们主要用这些类的方法操作它的 属性 。一共就分为三部分:读取栅格,看3.3节写出栅格,看3.4节计算栅格,看3.4.4,就是numpy的运算第二部分就是ORG处理矢量数据:1.读取shp文件,就直接创建驱动读取,就可以读取数据集,图层,要素的 属性 信息; 参数:输入栅格:此 栅格数据 集必须只有单一波段。不能为具有浮点像素类型或双精度像素类型的 栅格数据 集构建栅格 属性 。覆盖复选框:使用此选项可覆盖任何可能存在的现有栅格 属性 。NONE —现有的栅格 属性 将不会被覆盖,所有编辑都将追加到当前 中。这是默认设置。OVERWRITE —删除现有栅格 属性 ,并创建一个新的栅格 属性 。对于以上工具,ESRI给出的用法是:1.如果要删除现有 并创建一个新 ,可选中覆盖。将创建新的栅格 属性 并删除原有 。2.如果有一个现成的 并且未选中覆盖,则将更新该