最近在做一些遥感相关的图像处理项目,涉及到遥感生态指数的计算。由于项目要求Python实现,搜索互联网关于Python实现的遥感生态指数计算程序资料很少,于是就自己实现了一个并分享在这里,供需要的朋友参考。
首先需要了解遥感生态指数是什么,不是很清楚的朋友可以参考下面的几篇文章:
城市遥感生态指数的创建及其应用
区域生态环境变化的遥感评价指数
基于遥感生态指数的南京市生态变化分析
知道了遥感生态指数是什么后,程序实现其实比较简单,这里直接贴出程序。
"""
利用湿度、绿度、热度、干度计算遥感生态指数
"""
import os
import time
import numpy as np
from scipy import misc
from osgeo import gdal, gdalconst
from sklearn.decomposition import PCA
class CalIntegratedEcoIndex:
def __init__(self, img_path, res_save_dir):
self.img_width, self.img_height, self.img = self.read_img(img_path)
self.deno_bias = 0.00001 # 分母偏置,防止除0
self.res_save_dir = res_save_dir
def read_img(self, img_path):
"""读取遥感数据信息"""
dataset = gdal.Open(img_path, gdalconst.GA_ReadOnly)
img_width = dataset.RasterXSize
img_height = dataset.RasterYSize
img_data = np.array(dataset.ReadAsArray(0, 0, img_width, img_height), dtype=float) # 将数据写成数组,对应栅格矩阵
del dataset
return img_width, img_height, img_data
def get_wet_degree(self):
"""获取湿度指标"""
return 0.2626 * self.img[0] + 0.2141 * self.img[1] + 0.0926 * self.img[2] + \
0.0656 * self.img[3] -