How do I compute the area enclosed by contourm?

13 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Star Strider
Star Strider il 31 Mag 2021
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 Commenti
A LL
A LL il 1 Giu 2021
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 il 1 Giu 2021
As always, my pleasure!
I am happy that you discovered as solution that works!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Contour Plots in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by