Transform or convert coordinates of simple feature

Transform or convert coordinates of simple feature

st_transform(x, crs, ...)

# S3 method for sfc st_transform(x, crs, ..., partial = TRUE, check = FALSE, use_gdal = TRUE)

# S3 method for sf st_transform(x, crs, ...)

# S3 method for sfg st_transform(x, crs, ...)

st_proj_info(type = "proj")

st_wrap_dateline(x, options, quiet)

# S3 method for sfc st_wrap_dateline(x, options = "WRAPDATELINE=YES", quiet = TRUE)

# S3 method for sf st_wrap_dateline(x, options = "WRAPDATELINE=YES", quiet = TRUE)

# S3 method for sfg st_wrap_dateline(x, options = "WRAPDATELINE=YES", quiet = TRUE)


object of class sf, sfc or sfg


coordinate reference system: integer with the EPSG code, or character with proj4string




logical; allow for partial projection, if not all points of a geometry can be projected (corresponds to setting environment variable OGR_ENABLE_PARTIAL_REPROJECTION to TRUE)


logical; perform a sanity check on resulting polygons?


logical; this parameter is deprecated. For transformations using PROJ.4 directly rather than indirectly through GDAL, use st_transform_proj of package lwgeom (see Details)


character; one of have_datum_files, proj, ellps, datum, units or prime_meridians; see Details.


character; should have "WRAPDATELINE=YES" to function; another parameter that is used is "DATELINEOFFSET=10" (where 10 is the default value)


logical; print options after they have been parsed?


Transforms coordinates of object to new projection. Features that cannot be transformed are returned as empty geometries.

st_transform uses GDAL for coordinate transformations; internally, GDAL converts the proj4string into a well-known-text representation, before passing that on to PROJ.4. In this process, some information can get lost. Adding parameter +wktext to the proj4string definition may resolve this; see

Some PROJ.4 projections are not supported by GDAL, e.g. "+proj=wintri" because it does not have an inverse projection. Projecting to unsupported projections can be done by st_transform_proj, part of package lwgeom. Note that the unsupported proj4string cannot be passed as argument to st_crs, but has to be given as character string.

The st_transform method for sfg objects assumes that the CRS of the object is available as an attribute of that name.

st_proj_info lists the available projections, ellipses, datums or units supported by the Proj.4 library when type is equal to proj, ellps, datum or units; when type equals have_datum_files a boolean is returned indicating whether datum files are installed and accessible (checking for conus).

PROJ >= 6 does not provide option type = "datums". PROJ < 6 does not provide the option type = "prime_meridians".

For a discussion of using options, see and

  • st_transform
  • st_transform.sfc
  • st_transform.sf
  • st_transform.sfg
  • st_proj_info
  • st_wrap_dateline
  • st_wrap_dateline.sfc
  • st_wrap_dateline.sf
  • st_wrap_dateline.sfg
p1 = st_point(c(7,52))
p2 = st_point(c(-30,20))
sfc = st_sfc(p1, p2, crs = 4326)
st_transform(sfc, 3857)
st_transform(st_sf(a=2:1, geom=sfc), "+init=epsg:3857")
nc = st_read(system.file("shape/nc.shp", package="sf"))
st_area(nc[1,]) # area from long/lat
st_area(st_transform(nc[1,], 32119)) # NC state plane, m
st_area(st_transform(nc[1,], 2264)) # NC state plane, US foot
set_units(st_area(st_transform(nc[1,], 2264)), m^2)
st_transform(structure(p1, proj4string = "+init=epsg:4326"), "+init=epsg:3857")
st_wrap_dateline(st_sfc(st_linestring(rbind(c(-179,0),c(179,0))), crs = 4326))
wrld <- st_as_sf(maps::map("world", fill = TRUE, plot = FALSE))
wrld_wrap <- st_wrap_dateline(wrld, options = c("WRAPDATELINE=YES", "DATELINEOFFSET=180"),
   quiet = TRUE)
wrld_moll <- st_transform(wrld_wrap, "+proj=moll")
plot(st_geometry(wrld_moll), col = "transparent")
# }
Documentation reproduced from package sf, version 0.7-7, License: GPL-2 | MIT + file LICENSE

Community examples

Looks like there are no examples yet.