用python代码实现一个栅格数据逐波段相减
时间: 2023-06-10 20:05:52 浏览: 102
可以使用Python中的numpy和gdal库来实现栅格数据的逐波段相减。
首先,需要使用gdal库读取栅格数据,例如读取名为"input.tif"的栅格数据:
```python
from osgeo import gdal
import numpy as np
input_ds = gdal.Open("input.tif")
```
接下来,可以使用numpy库来获取读取的栅格数据的波段数、行数和列数:
```python
num_bands = input_ds.RasterCount
cols = input_ds.RasterXSize
rows = input_ds.RasterYSize
```
然后,可以将读取的栅格数据逐波段相减,例如将第一个波段减去第二个波段:
```python
band1_array = input_ds.GetRasterBand(1).ReadAsArray()
band2_array = input_ds.GetRasterBand(2).ReadAsArray()
result_array = band1_array - band2_array
```
最后,将结果保存为一个新的栅格数据,例如保存为名为"result.tif"的文件:
```python
driver = gdal.GetDriverByName("GTiff")
output_ds = driver.Create("result.tif", cols, rows, 1, gdal.GDT_Float32)
output_ds.GetRasterBand(1).WriteArray(result_array)
output_ds.FlushCache()
```
这样就实现了栅格数据的逐波段相减。
阅读全文