GDAL基本函数用法

#1*波段组成图像,波段指挥颜色

import gdal #导入库

dataset=gdal.open(“filename”) #文件名,如*.tif
dir(dataset) #可通过dir()来显示信息,或者某个函数的用法or print(dataset)

#基本函数
dataset.GetDescription() #获得栅格的描述信息
dataset.RasterCount #获得栅格数据集的波段数

band=dataset.GetRasterBand(1) #获得栅格数据集的波段

width=dataset.RasterXSize #读取图像的宽度,x方向上的像素个数
height=dataset.RasterYSize #读取图像的高度,y方向上的像素个数

#读取二进制
dataset.ReadRaster(xoff,yoff,xsize,ysize,buf_xsize=None,buf_ysize=None,buf_type=None,band_list=None)
#xoff,yoff指定想要读取的部分原点位置在整张图像中距离全图原点的位置
#xsize和ysize指定要读取部分图像的矩形大小
#buf_xsize,buf_ysize代表缩放大小,buf_type可设置读取的数据类型

#读取数组
dateset.ReadAsArray(xoff,yoff,xsize,ysize)
#举个例dataset.ReadRaster(230,270,10,10)#把图像中位于230,270,宽度为10高度为10的数据读取出来了

band.XSize
band.YSize #波段图像的宽和高
band.DataType #图像中实际数值的数据类型,具体的数据类型定义在gdalconst模块里,需import gdalconst

band.GetNoDataValue() #获取无意义值
band.GetMaximum()
band.GetMininum() #由于是文件格式没有固有的最值,所以不会显示出来,用下面这个函数
band.ComputeRasterMinMax()#能算出排除了无意义值后的最值

band.GetRasterColorInterpretation()
gdalconst.GCI_PaletteIndex

colormap=band.GetRasterColorTable() #获得颜色表
colormap.GetCount() #获得颜色的数量
colormap.GetPaletteInterpretation() #知道获得的颜色表是什么颜色表,比如是RGB颜色表
#比如GPI_GRAY,GPI_RGB,GPI_CYMP,GPI_HLS
gdal.GPI_RGB
for i in range(colormap.GetCount()):
print(colormap.GetColorEntry(i)) #获得颜色表中的值,有四个值,其中前三个有意义

#2细节
band.ReadAsArray(xoff,yoff,win_xsize,win_ysize,buf_xsize,buf_ysize)
#xoff,yoff是取值窗口的左上角在实际数据中所处象元的xy位置。
#win_xsize,win_ysize是取值窗口覆盖的区域大小
#buf_xsize,buf_ysize是取值窗口取出数组进行缩放后数组的大小,缩的时候是取周围点的平均值,如果不设置,则跟3、4参数一致

#例子1:横向读取和纵向读取的效率
import gdal
import time
dataset=gdal.Open(“filename”)
band=dataset.GetRasterBand(1)
width=dataset.RasterXSize
height=dataset.RasterYSize
bw=128
bh=128
bxsize=width/128
bysize=height/128
start=time.time()
band.ReadAsArray(0,0,width,height)
print(time.time()-start)
start2=time.time()
for i in range(bysize):
for j in range(bxsize):
band.ReadAsArray(bwj,bhi,bw,bh)
print(time.time()-start2)
#调换循环顺序
for j in range(bxsize):
for i in range(bysize):
band.ReadAsArray(bwj,bhi,bw,bh)

参考于http://blog.sina.com.cn/s/blog_132ecc3670102xzhr.html

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值