Obtaining the values within the boundary of my map
8 次查看(过去 30 天)
显示 更早的评论
Hello everyone,
I have some plots that they're from a 180*360*12 matrix with a code like this:
for i = 1:12
load coast
figure(i)
hold on
imagesc(lambda-180,phi,EWT(:,:,i));
plot(long,lat,'k');
end
B_1 = shaperead('Aqueduct_river_basins_TIGRIS & EUPHRATES.shp'); %one of the shape files that ive loaded on my map
mapshow(B_1,'facecolor','none');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/380651/image.jpeg)
you can see the boundaries on the map,the north africa and middle east region, now my question is: how could i derive EWT values within these boundaries, i want the average values on these areas at the end.
thanks for your considerations.
3 个评论
采纳的回答
KSSV
2020-10-15
Something like this:
[m,n,p] = size(EWT) ;
[X,Y] = meshgrid(lambda-180,phi) ;
B_1 = shaperead('Aqueduct_river_basins_TIGRIS & EUPHRATES.shp'); %one of the shape files that ive loaded on my map
N = length(B-1.X) ; % this should have different regions
iwant = cell(N,1) ;
for i = 1:N
% Get the indices insdie this polygon
idx = inpolygon(X,Y,B_1(i).X,B_i(i).Y) ;
% Get the mean of these points
thesum = 0 ;
for j = 1:p
T = EWT(:,:,i) ;
thesum = thesum+T(idx) ;
end
iwant{i} = thesum/p ;
end
The above code gives you inside the polygon points as scattered points. If you want grid, pick the chunk, use inpoltgon and make the outside indices data to NaN.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Denoising and Compression 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!