spatstat (version 1.64-1)

# 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`.

Xproj

Point pattern (object of class `"ppp"` containing the projected points.

mapXY

Integer vector identifying the nearest segment to each point.

d

Numeric vector of distances from each point of `X` to the corresponding projected point.

tp

Numeric 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.

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

## Examples

```# NOT RUN {
X <- rstrat(square(1), 5)
Y <- as.psp(matrix(runif(20), 5, 4), window=owin())
plot(Y, lwd=3, col="green")