python gdal 存储多波段tif
时间: 2023-12-19 13:02:16 浏览: 160
Python中可以使用GDAL库来存储多波段的TIFF图像。
首先要导入GDAL库:
```python
from osgeo import gdal
```
然后使用`gdal.GetDriverByName`函数创建一个驱动器对象,来指定要使用的文件格式,例如创建一个GeoTIFF驱动器对象:
```python
driver = gdal.GetDriverByName("GTiff")
```
接下来,定义图像的宽度、高度、波段数、数据类型等参数:
```python
width = 100
height = 100
num_bands = 3 # 波段数为3
data_type = gdal.GDT_Byte # 数据类型为字节
```
然后,使用`driver.Create`函数创建一个新的多波段TIFF图像文件:
```python
output_file = "output.tif" # 输出文件名
dataset = driver.Create(output_file, width, height, num_bands, data_type)
```
之后,可以使用`dataset.GetRasterBand`函数按照波段索引获取每个波段对象,并分别设置波段的数据:
```python
red_band = dataset.GetRasterBand(1) # 获取红色波段
red_data = np.zeros((height, width), dtype=np.uint8) # 自定义红色波段数据
red_band.WriteArray(red_data) # 将红色波段数据写入红色波段对象
green_band = dataset.GetRasterBand(2) # 获取绿色波段
green_data = np.zeros((height, width), dtype=np.uint8) # 自定义绿色波段数据
green_band.WriteArray(green_data) # 将绿色波段数据写入绿色波段对象
blue_band = dataset.GetRasterBand(3) # 获取蓝色波段
blue_data = np.zeros((height, width), dtype=np.uint8) # 自定义蓝色波段数据
blue_band.WriteArray(blue_data) # 将蓝色波段数据写入蓝色波段对象
```
最后,记得设置图像的地理信息和投影信息等属性并关闭文件:
```python
dataset.SetGeoTransform((0, 1, 0, 0, 0, -1)) # 设置图像的地理变换参数
dataset.SetProjection("") # 设置图像的投影信息
dataset.FlushCache() # 刷新缓存
dataset = None # 关闭文件
```
这样就成功创建了一个包含多个波段的TIFF图像文件。根据需求,可以自定义每个波段的数据,实现自定义的多波段TIFF存储。
阅读全文