获取TIF格式轮廓
在arcgis map中打开,
1、先对tif文件进行二值化,方法多样,可以用栅格计算器或者重分类;
2、使用栅格转面工具;
3、可以获取tif文件的轮廓,但是得到的结果可能还有外包轮廓,这只需要,打开编辑器,开始编辑,删掉外包轮廓,就可以了;
获取全球陆地/海洋掩膜
%绘制全球陆地/海洋掩膜
clc;
clear all;
res = 0.1; % grid size of land mask
Latlim = [-90 90];
Lonlim = [-180 180];
% m_proj('Mercator','lat',[-90 90],'lon',[-180 180]);
[S,~] = shaperead('landareas');
landmask = false(round(diff(Latlim)/res),round(diff(Lonlim)/res));%创建一个逻辑矩阵(logical matrix)landmask,判断地理坐标点是否位于陆地上。
%如果某个坐标位于陆地上,则对应的矩阵元素为true,否则为false。可以通过改变ture false达到获取海洋掩膜的目的
ref = makerefmat('RasterSize', size(landmask), ...
'Latlim', Latlim, 'Lonlim',Lonlim ,...
'ColumnsStartFrom','north','RowsStartFrom','west');
for i=1:length(S)
n = find(isnan(S(i).X), 1, 'first') - 1;
[r,c] = map2pix(ref, S(i).X(1:n), S(i).Y(1:n));
mask = roipoly(landmask,c,r);
landmask(mask)=true;
end
imagesc(landmask);
landmask01=double(landmask);
save('landmask.mat','landmask01');
% geotiffwrite('landmask',uint8(landmask),ref)
根据shp文件获取区域掩膜
在arcgis中,shp文件转栅格格式,进行 重分类 ,对结果 栅格转ASCII 得到txt文件,matlab中可以读取txt文件,得到区域掩膜
在shp文件转栅格格式过程中,像元大小就是经纬度格网大小,一边默认的像元值都不大,如果很大,就需要先进行“投影”,
重分类这一步骤可用可不用
如果还有其他方法,欢迎一起交流学习!