distance | R Documentation |

If `x`

is a **SpatRaster**:

If `y`

is `missing`

this method computes the distance, for all cells that are `NA`

in SpatRaster `x`

to the nearest cell that is not `NA`

(or other values, see arguments "target" and "exclude".

If `y`

is a numeric value, the cells with that value are ignored. That is, distance to or from these cells is not computed (only if `grid=FALSE`

).

If `y`

is a SpatVector, the distance to that SpatVector is computed for all cells. For lines and polygons this is done after rasterization; and only the overlapping areas of the vector and raster are considered (for now).

The distance is always expressed in meter if the coordinate reference system is longitude/latitude, and in map units otherwise. Map units are typically meter, but inspect `crs(x)`

if in doubt.

Results are more precise, sometimes much more precise, when using longitude/latitude rather than a planar coordinate reference system, as these distort distance.

If `x`

is a **SpatVector**:

If `y`

is `missing`

, a distance matrix between all object in `x`

is computed. An distance matrix object of class "dist" is returned.

If `y`

is a SpatVector the geographic distance between all objects is computed (and a matrix is returned). If both sets have the same number of points, and `pairwise=TRUE`

, the distance between each pair of objects is computed, and a vector is returned.

The distance is always expressed in meter, except when the coordinate reference system is longitude/latitude AND one of the SpatVector(s) consists of lines or polygons. In that case the distance is in degrees, and thus not very useful (this will be fixed soon). Otherwise, results are more precise, sometimes much more precise, when using longitude/latitude rather than a planar coordinate reference system, as these distort distance.

If `x`

is a **matrix**:

`x`

should consist of two columns, the first with "x" (or longitude) and the second with "y" coordinates (or latitude). If `y`

is a also a matrix, the distance between each points in `x`

and all points in `y`

is computed, unless `pairwise=TRUE`

If `y`

is missing, the distance between each points in `x`

with all other points in `x`

is computed, unless `sequential=TRUE`

## S4 method for signature 'SpatRaster,missing' distance(x, y, target=NA, exclude=NULL, unit="m", haversine=TRUE, filename="", ...) ## S4 method for signature 'SpatRaster,SpatVector' distance(x, y, unit="m", rasterize=FALSE, haversine=TRUE, filename="", ...) ## S4 method for signature 'SpatVector,ANY' distance(x, y, sequential=FALSE, pairs=FALSE, symmetrical=TRUE, unit="m") ## S4 method for signature 'SpatVector,SpatVector' distance(x, y, pairwise=FALSE, unit="m") ## S4 method for signature 'matrix,matrix' distance(x, y, lonlat, pairwise=FALSE) ## S4 method for signature 'matrix,missing' distance(x, y, lonlat, sequential=FALSE, pairs=FALSE, symmetrical=TRUE)

`x` |
SpatRaster, SpatVector, or two-column matrix with coordinates (x,y) or (lon,lat) |

`y` |
missing, numeric, SpatVector, or two-column matrix |

`target` |
numeric. The value of the cells for which distances to cells that are not |

`exclude` |
numeric. The value of the cells that should not be considered for computing distances |

`unit` |
character. Can be either "m" or "km" |

`haversine` |
logical. Use the haversine formula for lon/lat data use the haversine formula? If |

`rasterize` |
logical. If |

`filename` |
character. Output filename |

`...` |
additional arguments for writing files as in |

`sequential` |
logical. If |

`pairwise` |
logical. If |

`lonlat` |
logical. If |

`pairs` |
logical. If |

`symmetrical` |
logical. If |

SpatRaster or numeric or matrix or distance matrix (object of class "dist")

The distance unit is in meters.

A distance matrix can be coerced into a matrix with `as.matrix`

Karney, C.F.F., 2013. Algorithms for geodesics, J. Geodesy 87: 43-55. doi:10.1007/s00190-012-0578-z.

#lonlat r <- rast(ncols=36, nrows=18, crs="+proj=longlat +datum=WGS84") r[500] <- 1 d <- distance(r) plot(d / 100000) #planar rr <- rast(ncols=36, nrows=18, crs="+proj=utm +zone=1 +datum=WGS84") rr[500] <- 1 d <- distance(rr) rr[3:10, 3:10] <- 99 e <- distance(rr, exclude=99) p1 <- vect(rbind(c(0,0), c(90,30), c(-90,-30)), crs="+proj=longlat +datum=WGS84") dp <- distance(r, p1) d <- distance(p1) d as.matrix(d) p2 <- vect(rbind(c(30,-30), c(25,40), c(-9,-3)), crs="+proj=longlat +datum=WGS84") dd <- distance(p1, p2) dd pd <- distance(p1, p2, pairwise=TRUE) pd pd == diag(dd) # polygons, lines crs <- "+proj=utm +zone=1" p1 <- vect("POLYGON ((0 0, 8 0, 8 9, 0 9, 0 0))", crs=crs) p2 <- vect("POLYGON ((5 6, 15 6, 15 15, 5 15, 5 6))", crs=crs) p3 <- vect("POLYGON ((2 12, 3 12, 3 13, 2 13, 2 12))", crs=crs) p <- rbind(p1, p2, p3) L1 <- vect("LINESTRING(1 11, 4 6, 10 6)", crs=crs) L2 <- vect("LINESTRING(8 14, 12 10)", crs=crs) L3 <- vect("LINESTRING(1 8, 12 14)", crs=crs) lns <- rbind(L1, L2, L3) pts <- vect(cbind(c(7,10,10), c(3,5,6)), crs=crs) distance(p1,p3) distance(p) distance(p,pts) distance(p,lns) distance(pts,lns)

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.