필터 지우기
필터 지우기

How do I compute the area enclosed by contourm?

조회 수: 6 (최근 30일)
A LL
A LL 2021년 5월 31일
댓글: Star Strider 2021년 6월 1일
Hi all :)
I would like to know how to compute the area enclosed by a contour line plotted using contourm.
I have a 361x361 matrix respectivly for LAT, LON, sicstart. (sicEASE is also 361x361)
sicstart is basicly matrix containing 0, 1 or NaN.
I wanted to use polyarea(x,y) but I am not sure how to use it since I have a matrix of 0 ,1 or NaN and no (x,y) coordinates...
I have attached a figure of the contours I want to compute the area. Here is the code for the blue contour.
%Find ice at start week
sicstart = sicEASE;
index1 = find(sicEASE >= 0.15); %index for ice
index2 = find(sicEASE < 0.15); %index for no ice
sicstart(index1) = 1; %1 for ice
sicstart(index2) = 0; %0 for no ice
figure(1)
ncpolarm('lat',66); hold on;
contourm(LAT,LON,sicstart,'b','LineWidth',1.5);
Thanks for your help

채택된 답변

Star Strider
Star Strider 2021년 5월 31일
I do not have the Mapping Toolbox, so I have no experience with contourm. However looking at the documentation, it appears to be the same as for contour, with the ‘C’ matrix in contourm being the same as the ‘M’ matrix in contour. (See the documentation on M for a guide to ite interpretation and to understand how it works.)
Recovering the disjointed contours is not trivial, however it can be done. An example is in how to fill the interior of a closed surface? . There are likely other examples available. This is the first one I found in my archive.
Then, use trapz or polyarea on the (x,y) vectors to calculate the areas of each, and sum them.
.
  댓글 수: 4
A LL
A LL 2021년 6월 1일
Hi Star Strider,
Thanks again for your help!
I ended up using a much simpler technique to compute my area.
The contour I plot is represented by a matrix of 0, 1 and NaN and I am only plotting the contour for the 1 values. I simply summed the number of grid cells containing the value 1 to get all the area covered by the contour. I also know the area of each grid cell so, it becomes super straightforward to get the area of the contour.
%find where there is ice on the EASE grid
sicstart = sicEASE;
index1 = find(sicEASE >= 0.15); %index for ice
index2 = find(sicEASE < 0.15); %index for no ice
sicstart(index1) = 1; %1 for ice
sicstart(index2) = 0; %0 for no ice
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%new
%compute the total area of ice
area1cell = 25*25; %[km^2] area of 1 grid cell on the EASE grid
area = length(index1)*area1cell; %sea ice area
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%plot figure
figure(1)
ncpolarm('lat',66); hold on;
contourm(LAT,LON,sicstart,'b','LineWidth',1.5);
Thanks again for your precious advice!
Star Strider
Star Strider 2021년 6월 1일
As always, my pleasure!
I am happy that you discovered as solution that works!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Contour Plots에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by