achieving a weighted inpolygon function

1 Ansicht (letzte 30 Tage)
PIETRO DEVÒ
PIETRO DEVÒ am 9 Jan. 2022
Kommentiert: PIETRO DEVÒ am 10 Jan. 2022
Hi,
I have a n x m array, which represents a space of discrete cells, all equal to each other and with a defined spatial size, dx x dy. In each entry of the array I can have a certain parameter, that I will later need to evaluate.
I then have a boundary curve, defined by x and y vectors, that I use to define a study region, closed and spatially homogeneous with the sizes of cells, so that my coordinates are in a range of 0 to n*dx and 0 to m*dy.
Creating the meshgrids, I can succesfully use the inpolygon function to obtain the matrix of internal cells.
What I would also like to obtain is a matrix of weighted membership of each cell to the region defined by the boundary curve, so that I have a number from 0 (fully outside) to 1 (fully inside) that gives me essentially the percentage of area included inside that region for each cell.
What are the possibile ways to achieve that?
Thank you in advance

Akzeptierte Antwort

Matt J
Matt J am 9 Jan. 2022
Bearbeitet: Matt J am 9 Jan. 2022
If the cells and the study region are represented by polyshape objects,
you can use the polyshape.intersect() and polyshape.area() methods to find the intersection areas, and percentage areas.
  1 Kommentar
PIETRO DEVÒ
PIETRO DEVÒ am 10 Jan. 2022
This definitely did the trick!
Being short: starting from an NC file, with longitude, latitude, time and my parameter (precipitation), I produced a normalized x-y cell system of my problem, like that:
Where there is the little polyshape of my study region.
I essentialy used inpolygon function to identify firstly the "strictly included" barycentres of cells, then a combination of inpolygon to relative offsets of study region to add the "partially included" barycentres, obtaining:
Now, indexing that involved cells in a vector let me iterate cells in the original array of data to extract the parameter of interest. The intersect and area function, applied to each cell-region combination, evaluate the weight, achieving the objective.
Thank you very much.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 9 Jan. 2022
Not sure I understand. A diagram would help.
All I can guess is that the bwdist() function, to get the Euclidean distance from a point to the edge/boundary, or the regionfill() function might help.
  1 Kommentar
PIETRO DEVÒ
PIETRO DEVÒ am 10 Jan. 2022
Thank you for the answer, and sorry for not being clear.
This is an interesting method, I will try to implement also that way!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Smoothing finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by