latlim = [23 50];
lonlim = [-127 -65];
Usa = shaperead('landareas', 'usegeo', true, 'bounding', [lonlim' latlim']);
[latusa, lonusa] = maptrimp(Usa(1).Lat, Usa(1).Lon, latlim, lonlim);
n = 50;
xdata = linspace(lonlim(1), lonlim(2), n);
ydata = linspace(latlim(1), latlim(2), n);
zdata = peaks(n);
figure;
usamap('conus');
plotm(latusa, lonusa, 'k');
[C,h] = contourm(ydata, xdata, zdata);
K = 0;
n0 = 1;
while n0<=size(C,2)
K = K + 1;
n0 = n0 + C(2,n0) + 1;
end
el = cell(K,1);
Cout = struct('Level',el,'Length',el,'X',el,'Y',el);
n0 = 1;
for k = 1:K
Cout(k).Level = C(1,n0);
idx = (n0+1):(n0+C(2,n0));
Cout(k).Length = C(2,n0);
Cout(k).X = C(1,idx);
Cout(k).Y = C(2,idx);
n0 = idx(end) + 1;
end
[xc, yc] = deal(cell(length(Cout),1));
for ii = 1:length(Cout)
[xc{ii}, yc{ii}] = polybool('&', Cout(ii).X, Cout(ii).Y, lonusa, latusa);
end
figure;
usamap('conus');
plotm(latusa, lonusa, 'k');
cellfun(@(x,y) plotm(y,x,'r'), xc, yc);
Best Answer