# k_means

`k_means.Rd`

Compute k-means clusters for a SpatRaster. For large SpatRasters (with `ncell(x) > maxcell`

) this is done in two steps. First a sample of the cells is used to compute the cluster centers. Then each cell is assigned to a cluster by computing the distance to these centers.

## Usage

```
# S4 method for class 'SpatRaster'
k_means(x, centers=3, ..., maxcell=1000000, filename="", overwrite=FALSE, wopt=list())
```

## Arguments

- x
SpatRaster

- centers
either the number of clusters, or a set of initial (distinct) cluster centres. If a number, a random set of (distinct) cells in

`x`

is chosen as the initial centres- ...
additional arguments passed to

`kmeans`

- maxcell
positive integer. The size of the regular sample used if it is smaller than

`ncell(x)`

- filename
character. Output filename (ignored if

`as.raster=FALSE`

)- overwrite
logical. If

`TRUE`

,`filename`

is overwritten- wopt
list with additional arguments for writing files as in

`writeRaster`

## Examples

```
f <- system.file("ex/logo.tif", package = "terra")
r <- rast(f)
km <- k_means(r, centers=5)
km
#> class : SpatRaster
#> dimensions : 77, 101, 1 (nrow, ncol, nlyr)
#> resolution : 1, 1 (x, y)
#> extent : 0, 101, 0, 77 (xmin, xmax, ymin, ymax)
#> coord. ref. : Cartesian (Meter)
#> source(s) : memory
#> name : lyr1
#> min value : 1
#> max value : 5
```