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(数据管理工具)->Raster(栅格)->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.如果有一个现成的
表
并且未选中覆盖,则将更新该
表
。