achieving a weighted inpolygon function

1 次查看(过去 30 天)
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

采纳的回答

Matt J
Matt J 2022-1-9
编辑:Matt J 2022-1-9
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 个评论
PIETRO DEVÒ
PIETRO DEVÒ 2022-1-10
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.

请先登录,再进行评论。

更多回答(1 个)

Image Analyst
Image Analyst 2022-1-9
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 个评论
PIETRO DEVÒ
PIETRO DEVÒ 2022-1-10
Thank you for the answer, and sorry for not being clear.
This is an interesting method, I will try to implement also that way!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Smoothing 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by