# Rescaling coordinates of rasters, shapefiles and spatial objects from meters to km in R?

All my shapefiles, rasters and Spatial objects were projected to UTM NAD83. However, I need to convert them from meters to km for calculation reason. For rasters I can easily convert the "values" by dividing them with 1000. However when I plot them the coordinates were still in meters. It didn't look right if I convert the extent though (by dividing the extent with 1000). (the resolution was 25 meters).

Are methods for converting meters to km different for shapefiles, spatial objects and rasters?

Eventually I would like to create a discrete distance-to-road surface in which the unit and the coordinate system were both in km.

``````##Read road shp.file

#coerce SpatialLinesDataFrame object to SpatialLines object

#create an empty raster with the same extent and grid size=25
r<-raster(ext=extent(rd.spl), res=25)
rd.rs<-rasterize(rd.spl, r)          #rasterize SpatialLine
#assign 0 to all roads values
rd.rs<-reclassify(rd.rs, c(0,108,0))
rd.rs

class       : RasterLayer
dimensions  : 125, 104, 13000  (nrow, ncol, ncell)
resolution  : 25, 25  (x, y)
extent      : 590847.7, 593447.7, 4235915, 4239040  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=16 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
data source : in memory
names       : layer
values      : 0, 0  (min, max)
plot(rd.rs)
``````

``````#create discrete "distance-to-road" surface
d<-distance(rd.rs)/1000   #distance in km
plot(d)
``````

You can modify the extent and projection directly.

``````extent(r) <- extent(c(xmin(r), xmax(r), ymin(r), ymax(r))/1000)
projection(r) <- gsub("units=m", "units=km", projection(r))
``````

Obviously that's a bit "fast and loose", but it's going to work - as long as you have "units=m" in there, and it's not just assumed (which it often is).

You won't want to use `projectRaster` because it will completely rebuild your data with resampling, unnecessarily. Beware of what you do next because plotting and most things in `sp`/`rgdal` are not metadata/projection/unit aware, though most of them will tell you there's a problem and/or error so you can't see what's wrong. Plotting will never complain so it's very hard to figure out what is wrong.

Many of the `raster` functions are metadata-aware, at least to the level where it can `spTransform` them to the coordinate system in use, though some key ones are not.

• Thank you so much. I figured it out that day but there were more steps involved. I knew there must be an "easy click". Thanks a gain. – lamushidi Feb 1 '17 at 2:00