spatstat (version 1.19-0)

project2segment: Move Point To Nearest Line

Description

Given a point pattern and a line segment pattern, this function moves each point to the closest location on a line segment.

Usage

project2segment(X, Y)

Arguments

X
A point pattern (object of class "ppp").
Y
A line segment pattern (object of class "psp").

Value

  • A list with the following components. Each component has length equal to the number of points in X, and its entries correspond to the points of X.
  • XprojPoint pattern (object of class "ppp" containing the projected points.
  • mapXYInteger vector identifying the nearest segment to each point.
  • dNumeric vector of distances from each point of X to the corresponding projected point.
  • tpNumeric vector giving the scaled parametric coordinate $0 \le t_p \le 1$ of the position of the projected point along the segment.
  • For example suppose mapXY[2] = 5 and tp[2] = 0.33. Then Y[5] is the line segment lying closest to X[2]. The projection of the point X[2] onto the segment Y[5] is the point Xproj[2], which lies one-third of the way between the first and second endpoints of the line segment Y[5].

Details

For each point x in the point pattern X, this function finds the closest line segment y in the line segment pattern Y. It then `projects' the point x onto the line segment y by finding the position z along y which is closest to x. This position z is returned, along with supplementary information.

See Also

nearestsegment for a faster way to determine which segment is closest to each point.

Examples

Run this code
X <- rstrat(square(1), 5)
  Y <- as.psp(matrix(runif(20), 5, 4), window=owin())
  plot(Y, lwd=3, col="green")
  plot(X, add=TRUE, col="red", pch=16)
  v <- project2segment(X,Y)
  Xproj <- v$Xproj
  plot(Xproj, add=TRUE, pch=16)
  arrows(X$x, X$y, Xproj$x, Xproj$y, angle=10, length=0.15, col="red")

Run the code above in your browser using DataCamp Workspace