基于python的Hurst计算预测未来发展趋势(长时序栅格影像)

1.Hurst指数反映了时间序列长期记忆性的程度,即过去的信息对未来的影响程度。Hurst指数的取值范围为0到1之间,当Hurst指数等于0.5时,时间序列被认为是一种随机漫步,即具有随机性;当Hurst指数大于0.5时,时间序列显示出长期正相关性,表明趋势在未来可能持续;当Hurst指数小于0.5时,时间序列显示出长期负相关性,表明趋势在未来可能反转。

2.下面是一个例子,计算下面22幅影像的Hurst。
在这里插入图片描述
计算结果如下:
在这里插入图片描述
3.理论不再进一步讲解,直接上代码,有基础的可以自己调试,小白可以使用本人编好的exe程序,链接在下面。

import numpy as np
from osgeo import gdal
import osdef write(file_name, image, projection,geotransform,x_size,y_size):dtype = gdal.GDT_Float32# 数据格式driver = gdal.GetDriverByName('GTIFF')# 创建数据,设置文件路径及名称new_ds = driver.Create(file_name, x_size, y_size, 1, dtype)# 设置投影信息及6参数new_ds.SetGeoTransform(geotransform)new_ds.SetProjection(projection)# 将值写入new_ds中new_ds.GetRasterBand(1).WriteArray(image)# 把缓存数据写入磁盘new_ds.FlushCache()del new_dsdef Hurst(x):# x为numpy数组n = x.shape[0]t = np.zeros(n - 1)  # t为时间序列的差分for i in range(n - 1):t[i] = x[i + 1] - x[i]mt = np.zeros(n - 1)  # mt为均值序列,i为索引,i+1表示序列从1开始for i in range(n - 1):mt[i] = np.sum(t[0:i + 1]) / (i + 1)# Step3累积离差和极差,r为极差r = []for i in np.arange(1, n):  # i为taocha = []for j in np.arange(1, i + 1):if i == 1:cha.append(t[j - 1] - mt[i - 1])if i > 1:if j == 1:cha.append(t[j - 1] - mt[i - 1])if j > 1:cha.append(cha[j - 2] + t[j - 1] - mt[i - 1])r.append(np.max(cha) - np.min(cha))s = []for i in np.arange(1, n):ss = []for j in np.arange(1, i + 1):ss.append((t[j - 1] - mt[i - 1]) ** 2)s.append(np.sqrt(np.sum(ss) / i))r = np.array(r)s = np.array(s)xdata = np.log(np.arange(2, n))ydata = np.log(r[1:] / s[1:])h, b = np.polyfit(xdata, ydata, 1)return hdef main(path1,result_path):filepaths = []for file in os.listdir(path1):filepath1 = os.path.join(path1, file)filepaths.append(filepath1)# 获取影像数量num_images = len(filepaths)# 读取影像数据img1 = gdal.Open(filepaths[0])# 获取影像的投影,高度和宽度transform1 = img1.GetGeoTransform()proj = img1.GetProjection()height1 = img1.RasterYSizewidth1 = img1.RasterXSizearray1 = img1.ReadAsArray(0, 0, width1, height1)del img1# 读取所有影像for path1 in filepaths[1:]:if path1[-3:] == 'tif':img2 = gdal.Open(path1)array2 = img2.ReadAsArray(0, 0, width1, height1)array1 = np.vstack((array1, array2))del img2array1 = array1.reshape((num_images, height1, width1))# 输出矩阵,无值区用nan填充h_array = np.full([height1, width1], np.nan)# 只有有值的区域才进行计算c1 = np.isnan(array1)sum_array1 = np.sum(c1, axis=0)nan_positions = np.where(sum_array1 == num_images)positions = np.where(sum_array1<10)for i in range(len(positions[0])):x = positions[0][i]y = positions[1][i]hurst_list1 = array1[:, x, y]hurst_list1=hurst_list1[~np.isnan(hurst_list1)]h = Hurst(hurst_list1)h_array[x, y] = hwrite(result_path, h_array, proj, transform1, width1, height1)
if __name__ == "__main__":path1 = r"F:\rsei-2"result_path = r"F:\jieguo\h.tif"main(path1,result_path)

代码中导入了GDAL库,使用时需要安装该库。有基础的可以使用上述代码,自己调试,exe程序的链接如下,可以下载使用。

我用夸克网盘分享了「Hurst持续性检测.exe」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/83f34c91bc2e
提取码:MJ1L

希望大家可以关注下方的微信公众号:RS GIS遥感 地信学习,里面有更多的技术分享及软件使用教程,本人在这里谢谢大家,软件有什么问题可以微信公众号留言。感谢!!!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/343580.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAND Separate Command Address (SCA) 接口数据传输解读

在采用Separate Command Address (SCA) 接口的存储产品中&#xff0c;DQ input burst和DQ output burst又是什么样的策略呢&#xff1f; DQ Input Burst: 在读取操作期间&#xff0c;数据以一种快速并行的方式通过DQ总线传送到控制器。在SCA接口下&#xff0c;虽然命令和地址信…

Vue入门六(前端路由的概念与原理|Vue-router简单使用|登录跳转案例|scoped样式)

文章目录 前要&#xff1a;前端路由的概念与原理1&#xff09;什么是路由2&#xff09;SPA与前端路由3&#xff09;什么是前端路由4&#xff09;前端路由的工作方式 一、Vue-router简单使用1&#xff09;什么是vue-router2) vue-router 安装和配置的步骤① 安装 vue-router 包②…

500mA High Voltage Linear Charger with OVP/OCP

一、General Description YHM2810 is a highly integrated, single-cell Li-ion battery charger with system power path management for space-limited portable applications. The full charger function features Trickle-charge, constant current fast charge and const…

【DevOps-08-3】Jenkins容器内部使用Docker

一、简要描述 构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker。 二、配置和操作步骤 1、修改宿主机docker.sock权限 # 修改docker.sock 用户和用户组都为root $ …

Postman进行Soap webservice接口测试

许多人认为Postman是高级REST客户端&#xff0c;Postman是处理通过HTTP发送的请求的工具。其实Postman也可以测试与协议无关的SOAP webservice api接口。 要使用Postman发出SOAP请求&#xff0c;请执行以下操作&#xff1a; 1、提供SOAP端点作为URL&#xff0c;可以使用SOAP的W…

Memcache简介与运维

开源、高性能、高并发的分布式内存缓存系统。 作用 缓存关系型数据库的结果&#xff0c;减少数据库自身访问的次数。 常见内存缓存服务软件对比 memcache 纯内存 redis、memcachedb 可持久化存储&#xff0c;同时会使用磁盘存 …

汽配企业MES管理系统的特点与实践

随着汽车工业的飞速发展&#xff0c;汽车零部件制造企业面临着日益复杂的生产环境和多样化的市场需求。为了应对这些挑战&#xff0c;许多汽配企业开始引入MES管理系统解决方案&#xff0c;以提高生产效率、优化资源配置、提升产品质量。本文将重点探讨汽配企业MES管理系统的特…

代码随想录算法训练营第25天 | 216.组合总和III 17.电话号码的字母组合

目录 216.组合总和III &#x1f4a1;解题思路 回溯三部曲 &#x1f4bb;实现代码 17.电话号码的字母组合 &#x1f4a1;解题思路 # 数字和字母如何映射 # 回溯法来解决n个for循环的问题 &#x1f4bb;实现代码 216.组合总和III 题目链接&#xff1a;216.组合总和III …

大数据毕业设计:房屋数据分析可视化系统 预测算法 可视化 商品房数据 Flask框架(源码+讲解视频)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

如何提高匹配的精确度(多次学习)

我们工业自动化中&#xff0c;视觉软件匹配&#xff0c;都是学习一次&#xff0c;比如找到轮廓&#xff0c;旋转360度&#xff0c;也就是有360个轮廓&#xff0c;然后到图像中去找任意角度的目标。 这样的学习并不能一而概括全。 所以&#xff0c;我借鉴ai的方法&#xff0c;…

VBA_MF系列技术资料1-310

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于…

【TypeScript】入门基础知识

目前在做项目的技术栈是 reacttypescript&#xff0c;之前只知道 ts 是 js 的扩展&#xff0c;增加了类型检查&#xff0c;但是没有仔细的学过&#xff0c;纯纯看别人代码上手 anyscript&#xff08;这很难评...&#xff09;。趁着最近空闲&#xff0c;就学习一下 ts 的基础知识…