摘要: Python与开源GIS教程的内容,开发了单独的内容,请打开 https://www.osgeo.cn/pygis/ 查看。 本页面的内容不再更新。 上面我们介绍数据集操作的主要函数。 但是如果需要更多信息,我们就需要看一下遥感图像处理中更常...
本页面的内容不再更新。
上面我们介绍数据集操作的主要函数。 但是如果需要更多信息,我们就需要看一下遥感图像处理中更常用到的波段操作的函数。
获取数据集的波段
GetRasterBand 获得栅格数据集的波段
>>> from osgeo import gdal >>> dataset = gdal.Open("/bk/gdata/img_landsat_subset_index.img") >>> dataset.RasterCount 1 >>> band = dataset.GetRasterBand(1)
这里我们获取了第一个波段(红色值组成的表)。 注意!这里的 波段获取和通常的C数组获取不一样,开始是1不是0。获取了波 段,我们就可以在下面的操作中读取这个波段的所有数值。
查看波段的基本信息
下面我们现在来看看刚才读取出来的那个band
有些什么东西可
以供我们操作的。
与操作数据集一样,GDAL同样提供了查看波段基本信息的函数。
>>> from osgeo import gdal >>> dataset = gdal.Open("/bk/gdata/img_landsat.tif") >>> band = dataset.GetRasterBand(1) >>> dir(band) ['Checksum', 'ComputeBandStats', 'ComputeRasterMinMax', 'CreateMaskBand', 'DataType', 'Fill', 'FlushCache', 'GetBlockSize', 'GetColorTable', 'GetDefaultHistogram', 'GetDefaultRAT', 'GetDescription', 'GetHistogram', 'GetMaskBand', 'GetMaskFlags', 'GetMaximum', 'GetMetadata', 'GetMetadataItem', 'GetMetadata_Dict', 'GetMetadata_List', 'GetMinimum', 'GetNoDataValue', 'GetOffset', 'GetOverview', 'GetOverviewCount', 'GetRasterCategoryNames', 'GetRasterColorInterpretation', 'GetRasterColorTable', 'GetScale', 'GetStatistics', 'ReadAsArray', 'ReadRaster', 'SetColorTable', 'SetDefaultHistogram', 'SetDefaultRAT', 'SetDescription', 'SetMetadata', 'SetMetadataItem', 'SetNoDataValue', 'SetRasterCategoryNames', 'SetRasterColorInterpretation', 'SetRasterColorTable', 'SetStatistics', 'WriteArray', 'WriteRaster', 'XSize', 'YSize', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__get_array_interface__', '__getattr__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__swig_getmethods__', '__swig_setmethods__', '__weakref__', '_s', 'this']
看一下常用的操作。这些也是来获取波段的属性信息。
获取波段大小
>>> band.XSize 4688 >>> band.YSize 4631 >>> band.DataType 1
得到波段图像的宽和高(像元为单位)。 这个与dataset
中使
用RasterXSize
与RasterYSize
获取的值一致。DataType
是图
像中实际数值的数据类型,表示8位无符整型。 在
[subsec:banddatatype]节有更进一步的解释。
获取波段数据的属性
>>> band.GetNoDataValue() >>> band.GetMaximum() >>> band.GetMinimum() >>> band.ComputeRasterMinMax() (0.0, 255.0)
Maximum
是表示在本波段数值中最大的值,Minimum
当然
就是表示本波段中最小的值啦。 我们可以看到在一开始这
两个都没有值。因为对于文件格式不会有固有的最大最小值。
所以我们通过函数ComputeRasterMinMax()
计算得到了。注意!这里的最大最小值不包括"无意义值"! 也就是上面
显示的 NoDataValue
。用ComputeRasterMinMax()
算出的
最大最小值, 是排除了无意义值后计算出来的最大最小值。
返回目录:Python与开源GIS