make_mesh( data, xy_cols, type = c("kmeans","cutoff","cutoff_search"), cutoff, n_knots, seed =42, mesh =NULL, fmesher_func = fmesher::fm_rcdt_2d_inla, convex =NULL, concave = convex,...)## S3 method for class 'sdmTMBmesh'plot(x,...)
Arguments
data: A data frame.
xy_cols: A character vector of x and y column names contained in data. These should likely be in an equal distance projection. For a helper function to convert to UTMs, see add_utm_columns().
type: Method to create the mesh. Also see mesh argument to supply your own mesh.
cutoff: An optional cutoff if type is "cutoff". The minimum allowed triangle edge length.
n_knots: The number of desired knots if type is not "cutoff".
seed: Random seed. Affects stats::kmeans() determination of knot locations if type = "kmeans".
mesh: An optional mesh created via fmesher instead of using the above convenience options.
fmesher_func: Which fmesher function to use. Options include fmesher::fm_rcdt_2d_inla() and fmesher::fm_mesh_2d_inla() along with version without the _inla on the end.
convex: If specified, passed to fmesher::fm_nonconvex_hull(). Distance to extend non-convex hull from data.
concave: If specified, passed to fmesher::fm_nonconvex_hull(). "Minimum allowed reentrant curvature". Defaults to convex.
...: Passed to graphics::plot().
x: Output from make_mesh().
Returns
make_mesh(): A list of class sdmTMBmesh. The element mesh is the output from fmesher_func (default is fmesher::fm_mesh_2d_inla()). See mesh$mesh$n for the number of vertices.
plot.sdmTMBmesh(): A plot of the mesh and data points. To make your own ggplot2 version, pass your_mesh$mesh to inlabru::gg().
Examples
# Extremely simple cutoff:mesh <- make_mesh(pcod, c("X","Y"), cutoff =5, type ="cutoff")plot(mesh)# Using a k-means algorithm to assign vertices:mesh <- make_mesh(pcod, c("X","Y"), n_knots =50, type ="kmeans")plot(mesh)# But, it's better to develop more tailored meshes:# Pass arguments via '...' to fmesher::fm_mesh_2d_inla():mesh <- make_mesh( pcod, c("X","Y"), fmesher_func = fmesher::fm_mesh_2d_inla, cutoff =8,# minimum triangle edge length max.edge = c(20,40),# inner and outer max triangle lengths offset = c(5,40)# inner and outer border widths)plot(mesh)# Or define a mesh directly with fmesher (formerly in INLA):inla_mesh <- fmesher::fm_mesh_2d_inla( loc = cbind(pcod$X, pcod$Y),# coordinates max.edge = c(25,50),# max triangle edge length; inner and outer meshes offset = c(5,25),# inner and outer border widths cutoff =5# minimum triangle edge length)mesh <- make_mesh(pcod, c("X","Y"), mesh = inla_mesh)plot(mesh)