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

news2024/11/16 0:48:57

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 os

def 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_ds

def 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为tao
        cha = []
        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 h


def 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.RasterYSize
    width1 = img1.RasterXSize
    array1 = 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 img2

    array1 = 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] = h

    write(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.coloradmin.cn/o/1376910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA基础学习笔记-day17-反射

JAVA基础学习笔记-day17-反射 1. 反射(Reflection)的概念1.1 反射的出现背景1.2 反射概述1.3 Java反射机制研究及应用1.4 反射相关的主要API1.5 反射的优缺点 2. 理解Class类并获取Class实例2.1 理解Class2.1.1 理论上2.1.2 内存结构上 2.2 获取Class类的实例(四种方法)2.3 哪些…

【MySQL】本地创建MySQL数据库详解

文章目录 下载MySQL安装重置密码本地连接 下载MySQL 下载网址&#xff1a;https://dev.mysql.com/downloads/mysql/ 安装 将下载好的压缩包解压到D盘。 在解压好的文件夹中创建my.ini文件。 将以下代码复制粘贴到创建好的my.ini文件中。注意修改文件路径。 [mysqld] #设置…

重生奇迹MU装备升级材料的获取

在重生奇迹MU中&#xff0c;装备升级需要使用各种材料&#xff0c;包括经验章、神秘石、宝石、元素石等。以下是各种材料的获取方法。 经验章&#xff1a;经验章是装备升级的基础材料&#xff0c;可以通过打怪掉落、任务奖励、商城购买等方式获得。建议玩家们多参加游戏中的活…

Python——python练习题

1.小明身高1.75&#xff0c;体重80.5kg。请根据BMI公式&#xff08;体重除以身高的平方&#xff09;帮小明计算他的BMI指数&#xff0c;并根据BMI指数&#xff1a; 低于18.5&#xff1a;过轻 18.5-25&#xff1a;正常 25-28&#xff1a;过重 28-32&#xff1a;肥胖 高于32&…

(Arcgis)matlab编程批量处理hdf4格式转换为tif格式

国家青藏高原科学数据中心 中国区域1km无缝地表温度数据集&#xff08;2002-2020&#xff09; 此代码仅用于该数据集处理 版本&#xff1a;arcgis10.2 matlab2020 参考&#xff1a;MATLAB hdf(h5)文件转成tif图片格式&#xff08;批量处理&#xff09; 此代码仅用于该数据集处…

SecLists:安全测试人员的必备手册 | 开源日报 No.144

danielmiessler/SecLists Stars: 50.9k License: MIT SecLists 是安全测试人员的伴侣&#xff0c;它是一个收集了多种类型列表的项目&#xff0c;用于安全评估。这些列表包括用户名、密码、URL、敏感数据模式、模糊负载、Web shell 等。其目标是使安全测试人员能够将该存储库拉…

SV-9001 壁挂式网络采播终端

SV-9001 壁挂式网络采播终端 一、描述 SV-9001是深圳锐科达电子有限公司的一款壁挂式网络采播终端&#xff0c;具有10/100M以太网接口&#xff0c;配置一路线路输入和一组麦克风输入&#xff0c;可以直接连接音源输出设备或麦克风&#xff0c;将采集音源编码后发送至网络播放终…

腾讯云COS桶文件上传下载工具类

1&#xff0c;申请key和密钥 2&#xff0c;引入依赖 <dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.24</version></dependency>3&#xff0c;工具类 package com.example.activi…

跨境商城系统如何开发代购商城、国际物流、一件代发等功能?

跨境商城系统的开发涉及到多个方面&#xff0c;其中代购商城、国际物流和一件代发等功能是其中的重要组成部分。本文将详细介绍如何开发这些功能&#xff0c;以帮助跨境商城系统更好地满足市场需求。 一、代购商城的开发 代购商城是跨境商城系统中的重要功能之一&#xff0c;它…

怎么将文件批量重命名为不同名称?

怎么将文件批量重命名为不同名称&#xff1f;有许多情况下可以考虑对文件进行批量重命名为不同名称&#xff0c;文件分类和整理&#xff1a;当您需要对一组文件进行分类、整理或重新组织时&#xff0c;可以考虑将它们批量重命名为不同的名称。这有助于更好地组织文件并使其更易…

【JaveWeb教程】(22) MySQL数据库开发之多表查询:内连接、外连接、子查询 详细代码示例讲解(最全面)

目录 数据库开发-MySQL1. 多表查询1.1 概述1.1.1 数据准备1.1.2 介绍1.1.3 分类 1.2 内连接1.3 外连接1.4 子查询1.4.1 介绍1.4.2 标量子查询1.4.3 列子查询1.4.4 行子查询1.4.5 表子查询 1.5 案例 数据库开发-MySQL 1. 多表查询 1.1 概述 1.1.1 数据准备 SQL脚本&#xff…

品牌出海新篇章:DTC营销与红人矩阵的完美结合

随着全球市场的竞争日益激烈&#xff0c;品牌在出海过程中面临着前所未有的挑战。传统的销售渠道逐渐显得滞后&#xff0c;DTC模式正成为品牌开拓国际市场的新趋势。在这一趋势中&#xff0c;结合红人矩阵的DTC营销策略备受关注&#xff0c;为品牌打开了一扇通向全球市场的大门…

【笔记------freemodbus】一、stm32的裸机modbus-RTU从机移植(HAL库)

freemodbus的官方介绍和下载入口&#xff0c;官方仓库链接&#xff1a;https://github.com/cwalter-at/freemodbus modbus自己实现的话往往是有选择的支持几条指令&#xff0c;像断帧和异常处理可能是完全不处理的&#xff0c;用freemodbus实现的话要简单很多&#xff0c;可移植…

2023年国庆节深圳市节假日人口迁出数据,shp/excel格式

基本信息 数据名称: 深圳市节假日人口迁出数据 数据格式: Shp、excel 数据时间: 2023年国庆节 数据几何类型: 线 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1a0928迁出人口占迁出深圳市人口的比值&#xff08…

大模型实战作业03

大模型实战作业03 注&#xff1a; 因为微调数据较少&#xff0c;没有显示出个人助手的名字

GIS融合之路(五)番外-山海鲸的体积云又又又升级了

一转眼自上一篇文章已经过去半年之久&#xff0c;承诺的CesiumJS的天气文章竟然又又又又跳票了&#xff0c;没办法。开发任务时间紧&#xff0c;任务重。GIS的进一步整合进入深水区&#xff0c;每向前迈一步都是步履维艰&#xff0c;好不容易把体积雾&#xff0c;接触阴影&…

[SpringBoot]如何在一个普通类中获取一个Bean

最近在项目中出现了一个这种情况&#xff1a;我一顿操作猛如虎的写了好几个设计模式&#xff0c;然后在设计模式中的类中想将数据插入数据库&#xff0c;因此调用Mapper持久层&#xff0c;但是数据怎么都写不进去&#xff0c;在我一顿操作猛如虎的查找下&#xff0c;发现在普通…

创新奖肯定,这家LIMS您要留意了

近日&#xff0c;龙源电力的“风电化学监督LIMS信息化管理系统的研发与应用”项目荣获中国电力技术市场协会2023年电力行业技术监督创新成果一等奖。系统可为风电设备经济、环保、长周期安全运行提供保障&#xff0c;是国内首套新能源行业油液监测信息管理系统&#xff0c;经中…

Mysql查询与更新语句的执行

一条SQL查询语句的执行顺序 FROM&#xff1a;对 FROM 子句中的左表<left_table>和右表<right_table>执行笛卡儿积&#xff08;Cartesianproduct&#xff09;&#xff0c;产生虚拟表 VT1 ON&#xff1a;对虚拟表 VT1 应用 ON 筛选&#xff0c;只有那些符合<join_…

怎么做手机App测试?app测试详细流程和方法介绍!

1、手机APP测试怎么做&#xff1f; 手机APP测试&#xff0c;主要针对的是android和ios两大主流操作系统&#xff0c;主要考虑的就是功能性、兼容性、稳定性、易用性&#xff08;也就是人机交互&#xff09;、性能。 手机APP测试前的准备&#xff1a; 1.使用同类型的产品&…