python gds,gdb Python
目录一、读取标签图像文件格式。格式影像导入GDAL模块并查看版本/位置打开影像查看行列号和波段数查看影像文件描述和其他属性打开数据集波段并获取统计信息利用数组将波段数据写入数组将波段数据写入数组的两种方法对比二、操作影像计算植被指数三、写出标签图像文件格式。影像四、运行结果
一、读取标签图像文件格式。格式影像导入GDAL模块并查看版本/位置从开源基金会导入gdalprint(GDAL的版本是: GDAL .__version__)打印(gdal) GDAL的版本是:3 .0 .4模块的操作系统地理。 E:\ \ anaconda 3-2019 \ \ lib \ \ site-packages \ \ OS geo \ \ GDAL。py 打开影像数据集=gdal .open( F:\ GDAL learning \ Landsat 8。TIF,GDAL .GA _ ReadOnly)打印(数据集)操作系统地理。gdal。数据集;0x0000026EA51416C0处的" GDALDatasetShadow * "类型的大喝对象的代理查看行列号和波段数数量波段=数据集RasterCountprint(图像中的波段数:{n}\n .格式(n=num_bands))行=数据集RasterYSizecols=数据集RasterXSizeprint(图像大小为:{r}行x {c}列\n .格式(r=行,c=列)图像中的波段数:2图像大小为:8900行x 8563列查看影像文件描述和其他属性
文件描述,元数据,影像驱动,投影,仿射变换参数
desc=数据集GetDescription()元数据=数据集GetMetadata()print(栅格描述:{ desc }’.格式(desc=desc))打印(栅格元数据:)打印(元数据)打印( \n )驱动程序=数据集GetDriver()print(光栅驱动程序:{d}\n .格式(d=驱动程序。简称))项目=数据集get projection()print( Image projection:)print(proj \ n )gt=dataset .get geo transform()print( Image geo-transform:{ gt } \ n .格式(gt=gt))栅格描述:F:\ GDAL learning \ Landsat 8。标签图像文件格式。栅格元数据:{AREA_OR_POINT: Area , tiff tag _ x resolution : 1 }栅格驱动程序:GTiffImage投影:项目[未命名,GEOGCS[WGS 84 ,基准面[WGS_1984 ,椭球体[WGS 84 ,6378,137,293738383863373权限[EPSG , 7033打开数据集波段并获取统计信息数据类型,基本统计值
红色=数据集GetRasterBand(1)print(red)datatype=red。数据类型打印(波段数据类型:{dt} ).format(dt=datatype))datatype _ name=gdal .获取数据类型名称(数据类型)打印(波段数据类型名称:{ dt }).format(dt=datatype _ name))band _ max,band_min,band_mean,band _ stddev=red .GetStatistics(0,1)print(波段范围:{minmum} - {maxmum} ).format(maxmum=band_max,minmum=Band _ min))print( Band mean,stddev:{m},{s}).format(m=band_mean,s=band _ stddev))OS geo。gdal。乐队;类型为" GDALRasterBandShadow * "的大喝对象的代理在0x0000026EA51545D0波段数据类型:2波段数据类型名称:uint 16波段范围:55487.0-0.0波段平均值,标准偏差:10001.5556556566516利用数组将波段数据写入数组将数组导入为npprint(np .__版本_ _)帮助(红色ReadAsArray)red_data=red .readas array()print(Red _ data)print(红色带平均值为{m}).格式(m=red _ data。mean()))print( size为:{ SZ } .format(sz=red_data.shape))红带均值为4252.319493115796大小为:(8900,8563)将波段数据写入数组的两种方法对比image=np.zeros((数据集RasterYSize,数据集RasterXSize,数据集。范围(数据集)中b的光栅计数).RasterCount):波段=数据集GetRasterBand(b 1) image[:b]=band .readas数组()打印(图像。dtype)从操作系统地理导入gdal _ array image _ datatype=dataset .GetRasterBand(1).数据类型image _ correct=NP。零((数据集1 .RasterYSize,数据集RasterXSize,数据集RasterCount),dtype=gdal_array .范围(数据集)中b的GDALTypeCodeToNumericTypeCode(image _ datatype)).RasterCount):波段=数据集GetRasterBand(b 1) image[:b]=band .ReadAsArray()print(比较数据类型:)打印(之前的读取方法:{dt} .format(dt=image.dtype))print(这种读取方法:{dt} .格式(dt=image_correct.dtype))比较数据类型:之前的读取方法:浮动64这种读取方法:uint16二、操作影像计算植被指数从开源基金会导入gdal,gdal _ array将OS rimport numpy导入为NP dataset=gdal .open( F:\ GDAL learning \ Landsat 8。TIF,GDAL .GA _ ReadOnly)image _ datatype=数据集.GetRasterBand(1).数据类型image=NP。零((数据集1 .RasterYSize,数据集RasterXSize,数据集RasterCount),dtype=gdal_array .范围(数据集)中b的GDALTypeCodeToNumericTypeCode(image _ datatype)).RasterCount):波段=数据集GetRasterBand(b 1) image[:b]=band .ReadAsArray()print(红色带表示:{r} .格式(r=图像[:0]。均值()))打印(近红外波段均值:{nir} .格式(近红外光谱=图像[:1]。mean()))ndvi=(image[:1] - image[:0])/( image[:1] image[:0]).astype(NP。float 64)nan=NP。isnan(NDVI)NDVI=NDVI[~ nan]print( NDVI的意思是:{ nm } ).格式(nm=NP。mean(NDVI)))print( NDVI最大值:{ nmax } .format(nmax=np.percentile(ndvi,95)))print(ndvi min : {nmin}).format(nmin=np.percentile(ndvi,5)))ndvi=(image[:1] - image[:0])/( image[:1] image[:0]).astype(NP。浮动64)NDVI[NP。伊斯南(NDVI)]=99三、写出标签图像文件格式。影像driver=gdal .GetDriverByName( GTiff )NDVI _文件名= F:\ GDAL学习\陆地卫星8 _ NDVI。TIF的NDVI _ ds=司机.创建(归一化植被指数文件名,数据集RasterXSize,数据集100 . 00拉斯泰里泽,1,gdal .GDT浮动64度SetGeoTransform(数据集GetGeoTransform() )ndvi_ds .集合投影(数据集GetProjection() )ndvi_ds .GetRasterBand(1).写阵列(NDVI)带外=NDVI _ ds .GetRasterBand(1)带外FlushCache()带外SetNoDataValue(99)del ndvi_ds #写出文件后一定要关闭文件,不然在大蟒关闭之前文件为空。四、运行结果PS:没有进行定标和大气校正
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。