info = geotiffinfo('D:\1KM NDVI数据\裁剪数据\2001.tif');
pop1990 = imread('D:\1KM NDVI数据\裁剪数据\2001.tif');
imshow('D:\1KM NDVI数据\裁剪数据\2001.tif')
% 获取各格点经纬度
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(:);
pop1990(pop1990(:, 3) < -1 | pop1990(:, 3) > 1, 3) = 0;
pop1990_col = pop1990(:);
% 将三列数据组合成一个新数组
result = [lat_col, lon_col, pop1990_col];
save('C:\Users\y8143\Desktop\rs\result.mat', 'result');
读取tif数据的各个网格点的经纬度数据,并生成lat,lon,变量值的mat矩阵
批量处理:
folder_path = 'D:\1KM NDVI数据\裁剪数据';
% 获取文件夹下所有的 .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 = tif_data(:);
% 将数据添加到结果数组中
result = [result, tif_data_col];
end
% 保存结果到文件
save('C:\Users\y8143\Desktop\rs投稿\result.mat', 'result');