Python写单通道影像并赋值范围内随机值

 basic.py

from osgeo import gdal
import numpy as np
np.seterr(divide='ignore', invalid='ignore')

class Grid:
    # =============================================================================
    #     1. 函数1 read_tiff读取影像
    # =============================================================================
    def read_tiff(self, filename):
        # 读取影像,获取影像位置
        dataset = gdal.Open(filename)
        # 获取影像波段数,获取影像长宽
        im_band=dataset.GetRasterBand   #波段数
        im_width = dataset.RasterXSize  # 宽,列数
        im_height = dataset.RasterYSize  # 高,行数
        # 仿射矩阵
        im_GeoTransform = dataset.GetGeoTransform()
        # 地图投影信息
        img_proj = dataset.GetProjection()

        im_data = dataset.ReadAsArray(0, 0, im_width, im_height)
        del dataset
        return img_proj, im_GeoTransform, im_data

WriteSigTif.py 

import os
import sys
from basic import Grid
from osgeo import gdal
import numpy as np
import random

if __name__ == "__main__":
    run = Grid()
    inpath=r'Test.tif' #案例影像,用于加载投影信息
    img_proj, im_GeoTransform, im_data = run.read_tiff(inpath)

    #set Single band imaging's min and max
    vmin = 1
    vmax = 8

    outpath = r'Gray.tif'
    Xsize = 100;
    Ysize = 100;
    out_data = np.ones((Xsize, Ysize))

    for i in range(Xsize):
        for j in range(Ysize):
            out_data[i][j] = random.uniform(vmin,vmax)

    datatype = gdal.GDT_Float32 #输出影像数据类型
    im_bands, (im_height, im_width) = 1, out_data.shape
    driver = gdal.GetDriverByName("GTiff")
    dataset = driver.Create(outpath, im_width, im_height, im_bands, datatype)
    dataset.SetGeoTransform(im_GeoTransform)
    dataset.SetProjection(img_proj)
    dataset.GetRasterBand(1).WriteArray(out_data)  # 写入数组数据

    del dataset
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NaRi~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值