sf (version 1.0-9)

st_transform: 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 = st_crs(x), ..., aoi = numeric(0), pipeline = character(0), reverse = FALSE, desired_accuracy = -1, allow_ballpark = TRUE, partial = TRUE, check = FALSE )

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

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

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)

sf_proj_info(type = "proj", path)



object of class sf, sfc or sfg


target coordinate reference system: object of class `crs`, or input string for st_crs




area of interest, in degrees: WestLongitude, SouthLatitude, EastLongitude, NorthLatitude


character; coordinate operation pipeline, for overriding the default operation


boolean; has only an effect when pipeline is defined: if TRUE, the inverse operation of the pipeline is applied


numeric; Only coordinate operations that offer an accuracy of at least the one specified will be considered; a negative value disables this feature (requires GDAL >= 3.3)


logical; are ballpark (low accuracy) transformations allowed? (requires GDAL >= 3.3)


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; if TRUE, perform a sanity check on resulting polygons


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?


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


character; PROJ search path to be set


Transforms coordinates of object to new projection. Features that cannot be transformed are returned as empty geometries. Transforms using the pipeline= argument may fail if there is ambiguity in the axis order of the specified coordinate reference system; if you need the traditional GIS order, use "OGC:CRS84", not "EPSG:4326". Extra care is needed with the ESRI Shapefile format, because WKT1 does not store axis order unambigiously.

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

For a discussion of using options, see https://github.com/r-spatial/sf/issues/280 and https://github.com/r-spatial/sf/issues/1983

sf_proj_info lists the available projections, ellipses, datums, units, or data search path of the PROJ library when type is equal to proj, ellps, datum, units or path; when type equals have_datum_files a boolean is returned indicating whether datum files are installed and accessible (checking for conus).

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

for PROJ >= 7.1.0, the "units" query of sf_proj_info returns the to_meter variable as numeric, previous versions return a character vector containing a numeric expression.

See Also

st_transform_proj, part of package lwgeom.

sf_project projects a matrix of coordinates, bypassing GDAL altogether



Run this code
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")
try(st_transform(sfc, 3857, aoi = c(-280,-90,180,90)))
if (sf_extSoftVersion()["GDAL"] >= "3.0.0") {
  st_transform(sfc, pipeline =
	  "+proj=pipeline +step +proj=axisswap +order=2,1") # reverse axes
  st_transform(sfc, pipeline =
	  "+proj=pipeline +step +proj=axisswap +order=2,1", reverse = TRUE) # also reverse axes
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))

Run the code above in your browser using DataCamp Workspace