[R-sig-eco] Quantifying widths of polygons

Baldwin, Jim -FS jbaldwin at fs.fed.us
Wed Sep 30 16:38:54 CEST 2015


One metric for an "average width" that would be quick to calculate might be the diameter of a circle that has the same area as the polygon.  (Of course, if the tree crowns are nowhere near circular, this won't likely be a useful metric.)  Maybe there might be a similar approach for finding an ellipsoid with the same area to deal with your desire for an "eccentricity" metric.  (A fanciful approach might be to perform a principal components analysis on a grid (or dense random selection) of points in the polygon and use the "variance explained" for the two principal components to create the semi-major and semi-minor axes of an ellipse.  In any event, the usefulness of any metric will be based on how well it predicts or is associated with some other variable or variables of interest.)

Jim


-----Original Message-----
From: R-sig-ecology [mailto:r-sig-ecology-bounces at r-project.org] On Behalf Of Alexander Shenkin
Sent: Wednesday, September 30, 2015 3:10 AM
To: r-sig-ecology at r-project.org
Subject: [R-sig-eco] Quantifying widths of polygons

Hello all,

I am working with data on tree crowns, and this data describes points
(verticies) around the polyhedron of the crown volume (think of the crown as a single volume with vertices and faces).  I can calculate maximum z distance between any 2 points (maximum depth) and maximum x/y distance (maximum width).  These are useful metrics.  I would also like to quantify an "average" width of the polygon in 2D space (x/y only), as well as a metric that would describe the "eccentricity" of the polygon. 
  But, I'm not sure how to go about doing that.

In general, I've made the polyhedrons and polygons into convex shapes.

I have considered getting a centroid, intersecting lines every 10 degrees (for example) going through the centroid with the x/y polygon owin in spatstat, and then analyzing those line lengths.  But, I'm not sure that's the right way to go, and maybe there are already tools out there to do this. Any thoughts anyone might have would be very welcome!

Thanks,
Allie

(btw, I posted this on R-help (and on R-sig-ecology with no response), and it was suggested that a list such as this would be more appropriate... apologies for the cross-post)


library(rgl)
library(spatstat)
library(geometry)
  x =
c(1.9,-1.4,1.5,1.8,2.2,0.2,0.6,-0.9,-3.7,1.3,-1.9,-3.4,3.7,2.1,-2.0,-1.9)
y =
c(-3.1,3.0,1.1,-1.3,1.0,0.0,1.4,1.6,2.3,-3.6,-1.5,-1.3,0.3,-2.1,0.2,-0.3)
z = c(5.5,4.5,4.3,4.8,6.7,5.8,7.4,6.2,3.5,2.9,4.0,3.7,3.2,3.0,3.1,8.4)
depth = max(z) - min(z)
width_max = max(dist(matrix(c(x,y),ncol=2)))

xy_win = owin(poly=list(x=x,y=y))
conv_win = convexhull(xy_win)
# from here, maybe draw lines every 10 degrees through a centroid?
# avg_width = ??
# eccentricity = ??

# 3D plot of crown polyhedron (convex)
ps = data.frame(x=x,y=y,z=z)
crown.surf = t(convhulln(matrix(c(x,y,z),ncol=3)))
open3d()
rgl.triangles(ps[crown.surf,1],ps[crown.surf,2],ps[crown.surf,3],col=heat.colors(nrow(ps)),alpha=.2)
axes3d()

_______________________________________________
R-sig-ecology mailing list
R-sig-ecology at r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology



More information about the R-sig-ecology mailing list