R: Check validity or make an invalid geometry valid

valid {sf} | R Documentation

## Check validity or make an invalid geometry valid

### Description

Checks whether a geometry is valid, or makes an invalid geometry valid

### Usage

    st_is_valid(x, ...)

    ## S3 method for class 'sfc'
    st_is_valid(x, ..., NA_on_exception = TRUE, reason = FALSE)

    ## S3 method for class 'sf'
    st_is_valid(x, ...)

    ## S3 method for class 'sfg'
    st_is_valid(x, ...)

    st_make_valid(x)

    ## S3 method for class 'sfg'
    st_make_valid(x)

### Arguments

`x` | object of class `sfg`, `sfg` or `sf`
`...` | passed on to sfc method
`NA_on_exception` | logical; if TRUE, for polygons that would otherwise raise a GEOS error (exception, e.g. for a POLYGON having more than zero but less than 4 points, or a LINESTRING having one point) return an `NA` rather than raising an error, and suppress warning messages (e.g. about self-intersection); if FALSE, regular GEOS errors and warnings will be emitted.
`reason` | logical; if `TRUE`, return a character with, for each geometry, the reason for invalidity, `NA` on exception, or `"Valid Geometry"` otherwise.

### Details

`st_make_valid` uses the `lwgeom_makevalid` method also used by the PostGIS command `ST_makevalid` if the GEOS version linked to is smaller than 3.8.0, and otherwise the version shipped in GEOS.

### Value

`st_is_valid` returns a logical vector indicating for each geometries of `x` whether it is valid.

Object of the same class as `x`

### Examples

    p1 = st_as_sfc("POLYGON((0 0, 0 10, 10 0, 10 10, 0 0))")
    st_is_valid(p1)
    st_is_valid(st_sfc(st_point(0:1), p1[[1]]), reason = TRUE)
    library(sf)
    x = st_sfc(st_polygon(list(rbind(c(0,0),c(0.5,0),c(0.5,0.5),c(0.5,0),c(1,0),c(1,1),c(0,1),c(0,0)))))
    suppressWarnings(st_is_valid(x))
    y = st_make_valid(x)
    st_is_valid(y)
    y %>% st_cast()

[Package sf version 0.9-7 Index]