R: Convert sfc object to an WKB object

st_as_binary {sf} | R Documentation

## Convert sfc object to an WKB object

### Description

Convert sfc object to an WKB object

### Usage

    st_as_binary(x, ...)

    ## S3 method for class 'sfc'
    st_as_binary(
      x,
      ...,
      EWKB = FALSE,
      endian = .Platform$endian,
      pureR = FALSE,
      precision = attr(x, "precision"),
      hex = FALSE
    )

    ## S3 method for class 'sfg'
    st_as_binary(
      x,
      ...,
      endian = .Platform$endian,
      EWKB = FALSE,
      pureR = FALSE,
      hex = FALSE,
      srid = 0
    )

### Arguments

`x` | object to convert
`...` | ignored
`EWKB` | logical; use EWKB (PostGIS), or (default) ISO-WKB?
`endian` | character; either "big" or "little"; default: use that of platform
`pureR` | logical; use pure R solution, or C++?
`precision` | numeric; if zero, do not modify; to reduce precision: negative values convert to float (4-byte real); positive values convert to round(x*precision)/precision. See details.
`hex` | logical; return as (unclassed) hexadecimal encoded character vector?
`srid` | integer; override srid (can be used when the srid is unavailable locally).

### Details

`st_as_binary` is called on sfc objects on their way to the GDAL or GEOS libraries, and hence does rounding (if requested) on the fly before e.g. computing spatial predicates like st_intersects. The examples show a round-trip of an `sfc` to and from binary.

For the precision model used, see also https://locationtech.github.io/jts/javadoc/org/locationtech/jts/geom/PrecisionModel.html. There, it is written that: “... to specify 3 decimal places of precision, use a scale factor of 1000. To specify -3 decimal places of precision (i.e. rounding to the nearest 1000), use a scale factor of 0.001.”. Note that ALL coordinates, so also Z or M values (if present) are affected.

### Examples

    # examples of setting precision:
    st_point(c(1/3, 1/6)) %>% st_sfc(precision = 1000) %>% st_as_binary %>% st_as_sfc
    st_point(c(1/3, 1/6)) %>% st_sfc(precision =  100) %>% st_as_binary %>% st_as_sfc
    st_point(1e6 * c(1/3, 1/6)) %>% st_sfc(precision = 0.01) %>% st_as_binary %>% st_as_sfc
    st_point(1e6 * c(1/3, 1/6)) %>% st_sfc(precision = 0.001) %>% st_as_binary %>% st_as_sfc

[Package sf version 0.9-7 Index]