R: Distance between points and lines or the border of polygons.

dist2Line {geosphere} | R Documentation

## Distance between points and lines or the border of polygons.

### Description

The shortest distance between points and polylines or polygons.

### Usage

    dist2Line(p, line, distfun=distHaversine)

### Arguments

`p` | longitude/latitude of point(s). Can be a vector of two numbers, a matrix of 2 columns (first one is longitude, second is latitude) or a SpatialPoints* object
`line` | longitude/latitude of line as a matrix of 2 columns (first one is longitude, second is latitude) or a SpatialLines* or SpatialPolygons* object
`distfun` | A distance function, such as distHaversine

### Value

matrix with distance and lon/lat of the nearest point on the line. Distance is in the same unit as `r` in the `distfun`(default is meters). If `line` is a `Spatial*` object, the ID (index) of (one of) the nearest objects is also returned. Thus if the objects are polygons and the point is inside a polygon the function may return the ID of a neighboring polygon that shares the nearest border. You can use the `over` functions in packages `sp` or `rgeos` for point-in-polygon queries.

### Author(s)

George Wang and Robert Hijmans

### See Also

`dist2gc, alongTrackDistance`

### Examples

    line <- rbind(c(-180,-20), c(-150,-10), c(-140,55), c(10, 0), c(-140,-60))
    pnts <- rbind(c(-170,0), c(-75,0), c(-70,-10), c(-80,20), c(-100,-50),
             c(-100,-60), c(-100,-40), c(-100,-20), c(-100,-10), c(-100,0))
    d = dist2Line(pnts, line)
    plot( makeLine(line), type='l')
    points(line)
    points(pnts, col='blue', pch=20)
    points(d[,2], d[,3], col='red', pch='x')
    for (i in 1:nrow(d)) lines(gcIntermediate(pnts[i,], d[i,2:3], 10), lwd=2)

[Package geosphere version 1.5-5 Index]