R: Snap a set of points to a set of lines

snapPointsToLines {maptools} | R Documentation

## Snap a set of points to a set of lines

### Description

This function snaps a set of points to a set of lines based on the minimum distance of each point to any of the lines. This function does not work with geographic coordinates.

### Usage

    snapPointsToLines(points, lines, maxDist=NA, withAttrs = TRUE, idField=NA)

### Arguments

`points` | An object of the class SpatialPoints or SpatialPointsDataFrame.
`lines` | An object of the class SpatialLines or SpatialLinesDataFrame.
`maxDist` | Numeric value for establishing a maximum distance to avoid snapping points that are farther apart; its default value is NA.
`withAttrs` | Boolean value for preserving (TRUE) or getting rid (FALSE) of the original point attributes. Default: TRUE. This parameter is optional.
`idField` | A string specifying the field which contains each line's id. This id will be transferred to the snapped points data set to distinguish the line which each point was snapped to.

### Value

SpatialPointsDataFrame object as defined by the R package 'sp'. This object contains the snapped points, therefore all of them lie on the lines.

### Author(s)

German Carrillo and Ethan Plunkett

### See Also

`nearestPointOnSegment`, `nearestPointOnLine`, `sp`

### Examples

    # From the sp vignette
    l1 = cbind(c(1,2,3),c(3,2,2))
    l1a = cbind(l1[,1]+.05,l1[,2]+.05)
    l2 = cbind(c(1,2,3),c(1,1.5,1))
    Sl1 = Line(l1)
    Sl1a = Line(l1a)
    Sl2 = Line(l2)
    S1 = Lines(list(Sl1, Sl1a), ID="a")
    S2 = Lines(list(Sl2), ID="b")
    Sl = SpatialLines(list(S1,S2))
    df = data.frame(z = c(1,2), row.names=sapply(slot(Sl, "lines"), function(x) slot(x, "ID")))
    Sldf = SpatialLinesDataFrame(Sl, data = df)

    xc = c(1.2,1.5,2.5)
    yc = c(1.5,2.2,1.6)
    Spoints = SpatialPoints(cbind(xc, yc))

    if (rgeosStatus()) snapPointsToLines(Spoints, Sldf, maxDist=0.4)

[Package maptools version 0.9-9 Index]