NDVI考虑自相关的趋势分析(完整版)

1、数据预处理

1.1读取TIF数据,并将其整合为mat格式

folder_path = 'C:\Users\y8143\Desktop\rs投稿\CCY_fx\';

% 获取文件夹下所有的 .tif 文件
tif_files = dir(fullfile(folder_path, '*.tif'));

% 读取第一个文件的经纬度信息
info = geotiffinfo(fullfile(folder_path, tif_files(1).name));
pop1990 = imread(fullfile(folder_path, tif_files(1).name));

% 获取各格点经纬度
lat = zeros(size(pop1990, 1), size(pop1990, 2));
lon = zeros(size(pop1990, 1), size(pop1990, 2));
x = lat;
y = lon;

for i = 1 : size(pop1990, 1)
    for j = 1 : size(pop1990, 2)
        [x(i, j), y(i, j)] = pix2map(info.RefMatrix, i, j);
    end
end

[lat, lon] = projinv(info, x, y);

% 将经纬度转换为一列
lat_col = lat(:);
lon_col = lon(:);

% 初始化结果数组
result = [lat_col, lon_col];

% 遍历所有 .tif 文件并读取数据
for k = 1:length(tif_files)
    % 读取当前文件的图像数据
    tif_path = fullfile(folder_path, tif_files(k).name);
    tif_data = imread(tif_path);
    
    % 将不在 -1 到 1 范围内的数据设置为 0
    tif_data(tif_data < -1 | tif_data > 1) = 0;
    
    % 将图像数据转换为一列
    tif_data_col = double(tif_data(:));  % 确保为 double 类型
    
    % 将数据添加到结果数组中
    result = [result, tif_data_col];
end

% 保存结果到文件
% 将结果保存为 .mat 文件
save(fullfile(folder_path, 'result.mat'), 'result');

1.2 将mat数据再保存为R语言中的data数据框格式

# 安装 R.matlab 包(如果尚未安装)
# install.packages("R.matlab")

# 加载 R.matlab 包
library(R.matlab)

# 读取 MAT 文件
mat_data <- readMat("C:/Users/y8143/Desktop/rs投稿/CCY_fx/result.mat")

# 查看读取的数据结构
str(mat_data)

# 提取数据
result <- mat_data$result

# 确保 result 是一个矩阵或数据框,并且有 23 列
if (ncol(result) != 23) {
  stop("The result matrix does not have 23 columns as expected.")
}

# 创建列名向量
col_names <- c("lat", "lon", as.character(2000:2019), "land")

# 将 result 转换为数据框并设置列名
df <- as.data.frame(result)
names(df) <- col_names

# 查看数据框的前几行
head(df)

1.3 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值