For a single `RasterLayer`

(`y`

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

, to the nearest cell that is not `NA`

.
The distance unit is in meters if the RasterLayer is not projected (`+proj=longlat`

) and in map units (typically also meters) when it is projected.

If two `RasterLayer`

objects are provided, the cell-value distances are computed.
If two `Spatial`

vector type objects are provided, the distances between pairs of geographic object are computed.

```
# S4 method for class 'RasterLayer,missing'
distance(x, y, filename='', doEdge=TRUE, ...)
# S4 method for class 'RasterLayer,RasterLayer'
distance(x, y, ...)
# S4 method for class 'Spatial,Spatial'
distance(x, y, ...)
```

## Arguments

- x
RasterLayer object

- y
missing, RasterLayer or Spatial object

- filename
Character. Filename for the output RasterLayer (optional)

- doEdge
Logical. If `TRUE`

, the `boundaries`

function is called first. This may be efficient in cases where you compute the distance to large blobs. Calling `boundaries`

determines the edge cells that matter for distance computation

- ...
Additional arguments as for `writeRaster`

## See also

`distanceFromPoints`

, `gridDistance`

, `pointDistance`

See the `gdistance`

package for more advanced distances, and the `geosphere`

package for great-circle distances (and more) between points in longitude/latitude coordinates.

## Examples

```
r <- raster(ncol=36,nrow=18)
values(r) <- NA
r[500] <- 1
dist <- distance(r)
#plot(dist / 1000)
```