赞
踩
from osgeo import gdal data = gdal.Open("文件地址") im_width = data.RasterXSize # 获取宽度,数组第二维,左右方向元素长度,代表经度范围 im_height = data.RasterYSize # 获取高度,数组第一维,上下方向元素长度,代表纬度范围 im_bands = data.RasterCount # 波段数 """ GeoTransform 的含义: 影像左上角横坐标:im_geotrans[0],对应经度 影像左上角纵坐标:im_geotrans[3],对应纬度 遥感图像的水平空间分辨率(纬度间隔):im_geotrans[5] 遥感图像的垂直空间分辨率(经度间隔):im_geotrans[1] 通常水平和垂直分辨率相等 如果遥感影像方向没有发生旋转,即上北下南,则 im_geotrans[2] 与 im_geotrans[4] 为 0 计算图像地理坐标: 若图像中某一点的行数和列数分别为 row 和 column,则该点的地理坐标为: 经度:xGeo = im_geotrans[0] + row * im_geotrans[1] + column * im_geotrans[2] 纬度:yGeo = im_geotrans[3] + row * im_geotrans[4] + column * im_geotrans[5] """ im_geotrans = data.GetGeoTransform() # 获取仿射矩阵,含有 6 个元素的元组 im_proj = data.GetProjection() # 获取地理信息 """ GetRasterBand(bandNum),选择要读取的波段数,bandNum 从 1 开始 ReadAsArray(xoff, yoff, xsize, ysize),一般就按照下面这么写,偏移量都是 0 ,返回 ndarray 数组 """ im_data = data.GetRasterBand(1).ReadAsArray(xoff=0, yoff=0, xsize=im_width, ysize=im_height)
from osgeo import gdal
driver = gdal.GetDriverByName("GTiff") # 加载驱动
output = driver.Create("文件地址", im_width, im_height, 1, gdal.GDT_Float32) # 1 是写死的,表示输出一个波段
output.SetGeoTransform(im_geotrans) # 一般不用自己创建,读取文件里提取出来传入即可
output.SetProjection(im_proj) # 一般不用自己创建,读取文件里提取出来传入即可
output.GetRasterBand(1).WriteArray(array) # 选取第一个波段,将数据写入,这里array是二维数组
del output # 刷新缓存
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。