Arcpy栅格计算—Pearson相关系数
一、介绍
其中r是相关系数,t是从1到10的时间序列。相关系数范围为-1到1。
二、代码示例
1.引入库
代码如下(示例):
# -*- coding: UTF-8 -*-
# -*- coding: utf-8 -*-
import arcpy
import os
from arcpy import env
from arcpy.sa import *
2.读入数据
代码如下(示例):
arcpy.CheckOutExtension("ImageAnalyst") #检查许可
arcpy.CheckOutExtension('Spatial')
# 输入路径 应该注意,中文路径,会导致读不出文件
env.workspace = r"G:\GISfinal\LST\yearRLST" #数据存放目录
# 输出路径
outws = r"G:\GISfinal\LST\yearRLST\huigui"
# 读取所有tif文件
rasters = arcpy.ListRasters("*","tif")
# 初始化列表用于存储TIFF文件
y_ras = []
for ras in rasters:
y_ras.append(ras)
# 计算所有年份栅格平均值
outC = CellStatistics(y_ras, "MEAN")
# 计算出Xi-X(平均值) 和 Yi-Y(平均值),此处X为栅格值, Y为年份
RLst = [Minus(ras, outC) for ras in rasters]
tt = [i - 5.5 for i in range(1, 11)]
# 初始化上子式 和 下子式两个部分(左右),Plus为加,Minus为减,Times为乘,Divide为除
up = Times(tt[0], RLst[0])
downl = Square(RLst[0])
downr = pow(tt[0], 2)
# 进行公式累加计算
for i in range(1, 10):
up = Plus(up, Times(tt[i], RLst[i]))
downl = Plus(downl, Square(RLst[i]))
downr += pow(tt[i], 2)
#下子式的计算
down = Times(SquareRoot(downl), pow(downr, 0.5))
# 进行Pearson相关系数计算,即上子式除以下子式
Pr = Divide(up, down)
# down.save(os.path.join(outws, 'down1.tif'))
Pr.save(os.path.join(outws, '3Pearson_r.tif'))