Skip to contents

Transforms spatial coordinates from original projection (decimal degrees assumed) to another projection.


  x = NULL,
  lon = NULL,
  lat = NULL,
  new.names = "auto",
  rotate = FALSE, = 4326,
  proj.out = NULL,
  verbose = FALSE,
  bind = FALSE,
  na = "ignore"



Data frame to be transformed. Can be omitted if numeric vectors are assigned to lon and lat.

lon, lat

Either a name of the longitude and latitude columns in x or a numeric vector containing longitude and latitude coordinates. Use NULL to guess the longitude and/or latitude columns in x.


Character vector of length 2 specifying the names of transformed longitude and latitude columns, respectively. Alternatively NULL, which returns column names from x or "auto", which uses NULL if bind = FALSE and c("lon.proj", "lat.proj") if bind = TRUE.


Logical indicating whether the projected maps should be rotated to point towards the pole relative to the mid-longitude limit.

The original CRS. If NULL, the projection is taken from x. x must be a spatial object in that case.


Character. Either NULL, CRS the coordinates should be transformed to or a name of shapefiles in shapefile_list. If NULL, the output projection will be automatically determined from data. This option requires decimal degrees as input option.


Logical indicating whether information about the projection should be returned as message. Set to FALSE to make the function silent.


logical. Should only transformed coordinates be returned (FALSE, default) or should x be returned with transformed coordinates (TRUE)?


character specifying the NA action for missing coordinates. The "ignore" option ignores the coordinates and returns NAs to transformed coordinates. The "remove" option removes missing values from x returning a message while doing it. Any other character argument will trigger stopping the function in case of missing coordinates.


Returns a data frame with transformed spatial coordinates.


If x is specified, the function guesses longitude and latitude columns from x by default.

See also

Other basemap functions: basemap(), qmap(), shapefile_list()


Mikko Vihtakari


# Coordinates are automatically transformed to the pre-made shapefile
# projections:
x <- data.frame(lon = c(-150, 150), lat = c(60, 90))
#>        lon     lat
#> 1 -1666567 2886579
#> 2        0       0
transform_coord(x, bind = TRUE)
#>    lon lat lon.proj lat.proj
#> 1 -150  60 -1666567  2886579
#> 2  150  90        0        0

x <- data.frame(lon = c(-150, 150), lat = c(20, 50))
transform_coord(x, bind = TRUE) # no transformation required.
#>    lon lat lon.proj lat.proj
#> 1 -150  20     -150       20
#> 2  150  50      150       50