Skip to contents

These functions still attempt to do their job, but will be removed in a future version.


fm_spTransform(x, ...)

# S3 method for default
fm_spTransform(x, crs0 = NULL, crs1 = NULL, passthrough = FALSE, ...)

# S3 method for SpatialPoints
fm_spTransform(x, CRSobj, passthrough = FALSE, ...)

# S3 method for SpatialPointsDataFrame
fm_spTransform(x, CRSobj, passthrough = FALSE, ...)

# S3 method for inla.mesh.lattice
fm_spTransform(x, CRSobj, passthrough = FALSE, ...)

# S3 method for inla.mesh.segment
fm_spTransform(x, CRSobj, passthrough = FALSE, ...)

# S3 method for inla.mesh
fm_spTransform(x, CRSobj, passthrough = FALSE, ...)


fm_not_for_PROJ6(fun = NULL)

fm_not_for_PROJ4(fun = NULL)

fm_fallback_PROJ6(fun = NULL)

fm_requires_PROJ6(fun = NULL)

fm_as_sp_crs(x, ...)







A sp::Spatial object


Potential additional arguments


The source sp::CRS or inla.CRS object


The target sp::CRS or inla.CRS object


Default is FALSE. Setting to TRUE allows objects with no CRS information to be passed through without transformation.


The target sp::CRS or inla.CRS object


The name of the function that requires PROJ6. Default: NULL, which uses the name of the calling function.


A CRS object, or NULL if no valid CRS identified

An fm_segm object

An fm_mesh_2d object


This function is a convenience method to workaround PROJ4/PROJ6 differences, and the lack of a crs extraction method for Spatial objects. For newer code, use fm_crs() instead, that returns crs objects, and use fm_CRS() to extract/construct/convert to old style sp::CRS objects.


  • fm_spTransform(): [Deprecated] (See fm_transform() instead) Handle transformation of various inla objects according to coordinate reference systems of sp::CRS or INLA::inla.CRS class.

  • fm_spTransform(default): The default method handles low level transformation of raw coordinates.

  • fm_has_PROJ6(): Detect whether PROJ6 is available

  • fm_not_for_PROJ6(): fm_not_for_PROJ6 is called to warn about using old PROJ4 features even though PROJ6 is available

  • fm_not_for_PROJ4(): fm_not_for_PROJ4 is called to give an error when calling methods that are only available for PROJ6

  • fm_fallback_PROJ6(): Called to warn about falling back to using old PROJ4 methods when a PROJ6 method hasn't been implemented

  • fm_requires_PROJ6(): Called to give an error when PROJ6 is required but not available

  • fm_as_sp_crs(): Wrapper for fm_CRS() sp::Spatial and sp::CRS objects.

  • fm_sp_get_crs(): Wrapper for CRS(projargs) (PROJ4) and CRS(wkt) for sp::Spatial objects.

  • fm_as_inla_mesh_segment(): Conversion to inla.mesh.segment [Deprecated] in favour of fm_as_segm().

  • fm_as_inla_mesh(): Conversion to inla.mesh. [Deprecated] in favour of fm_as_mesh_2d().

  • fm_sp2segment(): [Deprecated] in favour of fm_as_segm()

See also


Finn Lindgren


if (fm_safe_sp()) {
  s <- sp::SpatialPoints(matrix(1:6, 3, 2), proj4string = fm_CRS("sphere"))
#> Coordinate Reference System:
#> Deprecated Proj.4 representation: +proj=geocent +R=1 +units=m +no_defs 
#> WKT2 2019 representation:
#> GEODCRS["unknown",
#>     DATUM["unknown",
#>         ELLIPSOID["unknown",1,0,
#>             LENGTHUNIT["metre",1,
#>                 ID["EPSG",9001]]]],
#>     PRIMEM["Reference meridian",0,
#>         ANGLEUNIT["degree",0.0174532925199433,
#>             ID["EPSG",9122]]],
#>     CS[Cartesian,3],
#>         AXIS["(X)",geocentricX,
#>             ORDER[1],
#>             LENGTHUNIT["metre",1,
#>                 ID["EPSG",9001]]],
#>         AXIS["(Y)",geocentricY,
#>             ORDER[2],
#>             LENGTHUNIT["metre",1,
#>                 ID["EPSG",9001]]],
#>         AXIS["(Z)",geocentricZ,
#>             ORDER[3],
#>             LENGTHUNIT["metre",1,
#>                 ID["EPSG",9001]]]]