Provided by: grass-doc_8.4.1-1_all bug

NAME

       r.proj  - Re-projects a raster map from given project to the current project.

KEYWORDS

       raster, projection, transformation, import

SYNOPSIS

       r.proj
       r.proj --help
       r.proj    [-lnpg]    project=name     [mapset=name]      [input=name]      [dbase=path]     [output=name]
       [method=string]    [memory=memory  in  MB]     [resolution=float]     [pipeline=string]     [--overwrite]
       [--help]  [--verbose]  [--quiet]  [--ui]

   Flags:
       -l
           List raster maps in input mapset and exit

       -n
           Do  not  perform  region cropping optimization. See Notes if working with a global latitude-longitude
           projection

       -p
           Print input map’s bounds in the current projection and exit

       -g
           Print input map’s bounds in the current projection and exit (shell style)

       --overwrite
           Allow output files to overwrite existing files

       --help
           Print usage summary

       --verbose
           Verbose module output

       --quiet
           Quiet module output

       --ui
           Force launching GUI dialog

   Parameters:
       project=name [required]
           Project (location) containing input raster map
           Project name (not path to project)

       mapset=name
           Mapset containing input raster map
           Default: name of current mapset

       input=name
           Name of input raster map to re-project

       dbase=path
           Path to GRASS database of input project
           Default: path to the current GRASS GIS database

       output=name
           Name for output raster map (default: same as ’input’)

       method=string
           Interpolation method to use
           Options: nearest, bilinear, bicubic, lanczos, bilinear_f, bicubic_f, lanczos_f
           Default: nearest
           nearest: nearest neighbor
           bilinear: bilinear interpolation
           bicubic: bicubic interpolation
           lanczos: lanczos filter
           bilinear_f: bilinear interpolation with fallback
           bicubic_f: bicubic interpolation with fallback
           lanczos_f: lanczos filter with fallback

       memory=memory in MB
           Maximum memory to be used (in MB)
           Cache size for raster rows
           Default: 300

       resolution=float
           Resolution of output raster map

       pipeline=string
           PROJ pipeline for coordinate transformation

DESCRIPTION

       r.proj is used to reproject a raster map from the coordinate reference system (CRS) of the input  project
       into  a  CRS  of  a specified project (previously called location). The CRS information is taken from the
       current PROJ_INFO files, as set and viewed with g.proj.

   Introduction
   Map projections
       Map projections are a method of representing information from a curved surface (usually  a  spheroid)  in
       two  dimensions,  typically to allow indexing through cartesian coordinates.  There are a wide variety of
       projections,  with  common  ones  divided  into  a  number  of   classes,   including   cylindrical   and
       pseudo-cylindrical,  conic  and  pseudo-conic,  and  azimuthal  methods,  each of which may be conformal,
       equal-area, or neither.

       The particular projection chosen depends on the purpose of the project, and the size, shape and  location
       of  the  area  of  interest.   For example, normal cylindrical projections are good for maps which are of
       greater extent east-west than north-south and in equatorial regions, while conic projections  are  better
       in  mid-latitudes;  transverse  cylindrical  projections  are  used  for maps which are of greater extent
       north-south than east-west; azimuthal projections are used for polar regions.  Oblique versions of any of
       these may also be used.  Conformal  projections  preserve  angular  relationships,  and  better  preserve
       arc-length,  while  equal-area projections are more appropriate for statistical studies and work in which
       the amount of material is important.

       Projections are defined by precise mathematical relations, so the method of projecting coordinates from a
       geographic reference frame (latitude-longitude) into a projected cartesian reference frame (eg metres) is
       governed by these equations.  Inverse projections can also be achieved.  The public-domain Unix  software
       package  PROJ  [1]  has  been designed to perform these transformations, and the user’s manual contains a
       detailed description of over 100 useful projections.  This also includes a  programmers  library  of  the
       projection methods to support other software development.

       Thus,  converting a vector map - in which objects are located with arbitrary spatial precision - from one
       projection into another is usually accomplished by a simple two-step process: first the location  of  all
       the   points   in   the   map   are  converted  from  the  source  through  an  inverse  projection  into
       latitude-longitude, and then through a forward projection into the target.  (Of course the procedure will
       be one-step if either the source or target is in geographic coordinates.)

       Converting  a  raster  map,  or  image,  between  different  projections,  however,  involves  additional
       considerations.   A  raster  may be considered to represent a sampling of a process at a regular, ordered
       set of locations.  The set of locations that lie  at  the  intersections  of  a  cartesian  grid  in  one
       projection  will  not,  in  general,  coincide  with  the sample points in another projection.  Thus, the
       conversion of raster maps involves an interpolation step in which the values of  points  at  intermediate
       locations relative to the source grid are estimated.

   Reprojecting vector maps within the GRASS GIS
       GIS data capture, import and transfer often requires a reprojection step, since the source or client will
       frequently be in a different CRS to the working CRS.

       In some cases it is convenient to do the conversion outside the package, prior to import or after export,
       using software such as PROJ’s cs2cs [1]. This is an easy method for converting an ASCII file containing a
       list  of  coordinate  points, since there is no topology to be preserved and cs2cs can be used to process
       simple lists using a one-line command.  The m.proj module provides a handy front end to cs2cs.

       Vector maps is generally more complex, as parts of the data stored in the files will  describe  topology,
       and  not  just  coordinates.  In  GRASS  GIS  the  v.proj  module  is  provided to reproject vector maps,
       transferring topology and attributes as well as node coordinates.  This program uses the  CRS  definition
       and  parameters  which are stored in the PROJ_INFO and PROJ_UNITS files in the PERMANENT mapset directory
       for every GRASS project.

   Design of r.proj
       As discussed briefly above, the fundamental step in reprojecting a raster is resampling the  source  grid
       at  locations  corresponding  to  the  intersections of a grid in the target CRS. The basic procedure for
       accomplishing this, therefore, is as follows:

       r.proj converts a map to a new CRS. It reads a map from a different project, reprojects it and writes  it
       out to the current project. The reprojected data is resampled with one of four different methods: nearest
       neighbor, bilinear, bicubic interpolation or lanczos.

       The  method=nearest  method,  which  performs  a nearest neighbor assignment, is the fastest of the three
       resampling methods. It is primarily used for categorical data such as a land use classification, since it
       will not change the values of the data cells. The method=bilinear method determines the new value of  the
       cell based on a weighted distance average of the 4 surrounding cells in the input map. The method=bicubic
       method  determines  the  new value of the cell based on a weighted distance average of the 16 surrounding
       cells in the input map. The method=lanczos method determines the  new  value  of  the  cell  based  on  a
       weighted distance average of the 25 surrounding cells in the input map. Compared to bicubic, lanczos puts
       a  higher weight on cells close to the center and a lower weight on cells away from the center, resulting
       in slightly better contrast.

       The bilinear, bicubic and lanczos interpolation methods are most  appropriate  for  continuous  data  and
       cause  some  smoothing.  The  amount  of  smoothing  decreases from bilinear to bicubic to lanczos. These
       options should not be used with categorical data, since the cell values will be altered.

       In the bilinear, bicubic and lanczos methods, if any of the surrounding cells used to interpolate the new
       cell value are NULL, the resulting cell will be NULL, even if the nearest cell is  not  NULL.  This  will
       cause  some  thinning  along  NULL  borders,  such  as the coasts of land areas in a DEM. The bilinear_f,
       bicubic_f and lanczos_f interpolation methods can be used if thinning along NULL edges  is  not  desired.
       These  methods "fall back" to simpler interpolation methods along NULL borders.  That is, from lanczos to
       bicubic to bilinear to nearest.

       If nearest neighbor assignment is used, the output map has the same raster format as the  input  map.  If
       any of the interpolations is used, the output map is written as floating point.

       Note  that,  following normal GRASS conventions, the coverage and resolution of the resulting grid is set
       by the current region settings, which  may  be  adjusted  using  g.region.  The  target  raster  will  be
       relatively  unbiased  for  all  cases  if  its  grid  has a similar resolution to the source, so that the
       resampling/interpolation step is only a local operation.  If the  resolution  is  changed  significantly,
       then  the  behaviour  of  the  generalisation or refinement will depend on the model of the process being
       represented.  This will be very different for categorical versus numerical data.  Note that three methods
       for the local interpolation step are provided.

       r.proj supports general datum transformations, making use of  the  PROJ  co-ordinate  system  translation
       library.

NOTES

       If output is not specified it is set to be the same as input map name.
       If mapset is not specified, its name is assumed to be the same as the current mapset’s name.
       If dbase is not specified it is assumed to be the current database. The user only has to specify dbase if
       the source project is stored in another separate GRASS database.

       To  avoid  excessive  time  consumption  when  reprojecting a map the region and resolution of the target
       project should be set appropriately beforehand.

       A simple way to do this is to check the projected bounds of the input map in the  current  project’s  CRS
       using the -p flag. The -g flag reports the same thing, but in a form which can be directly cut and pasted
       into  a  g.region  command. After setting the region in that way you might check the cell resolution with
       "g.region -p" then snap it to a regular grid with g.region’s -a flag. E.g.  g.region -a  res=5  -p.  Note
       that this is just a rough guide.

       A more involved, but more accurate, way to do this is to generate a vector "box" map of the region in the
       source  project  using  v.in.region  -d.  This "box" map is then reprojected into the target project with
       v.proj. Next the region in the target project is set to the extent of the new vector  map  with  g.region
       along  with  the  desired  raster  resolution  (g.region -m can be used in Latitude/Longitude projects to
       measure the geodetic length of a pixel).  r.proj is then run  for  the  raster  map  the  user  wants  to
       reproject.  In this case a little preparation goes a long way.

       When reprojecting whole-world maps the user should disable map-trimming with the -n flag. Trimming is not
       useful  here  because the module has the whole map in memory anyway. Besides that, world "edges" are hard
       (or impossible) to find in CRSs other than latitude-longitude so results may be odd with trimming.

EXAMPLES

   Inline method
       With GRASS running in the destination project use the -g  flag  to  show  the  input  map’s  bounds  once
       reprojected  into  the  current working CRS, then use that to set the region bounds before performing the
       reprojection:
       # calculate where output map will be
       r.proj input=elevation project=ll_wgs84 mapset=user1 -p
       Source cols: 8162
       Source rows: 12277
       Local north: -4265502.30382993
       Local south: -4473453.15255565
       Local west: 14271663.19157564
       Local east: 14409956.2693866
       # same calculation, but in a form which can be cut and pasted into a g.region call
       r.proj input=elevation project=ll_wgs84 mapset=user1 -g
       n=-4265502.30382993 s=-4473453.15255565 w=14271663.19157564 e=14409956.2693866 rows=12277 cols=8162
       g.region n=-4265502.30382993 s=-4473453.15255565 \
         w=14271663.19157564 e=14409956.2693866 rows=12277 cols=8162 -p
       projection: 99 (Mercator)
       zone:       0
       datum:      wgs84
       ellipsoid:  wgs84
       north:      -4265502.30382993
       south:      -4473453.15255565
       west:       14271663.19157564
       east:       14409956.2693866
       nsres:      16.93824621
       ewres:      16.94352828
       rows:       12277
       cols:       8162
       cells:      100204874
       # round resolution to something cleaner
       g.region res=17 -a -p
       projection: 99 (Mercator)
       zone:       0
       datum:      wgs84
       ellipsoid:  wgs84
       north:      -4265487
       south:      -4473465
       west:       14271653
       east:       14409965
       nsres:      17
       ewres:      17
       rows:       12234
       cols:       8136
       cells:      99535824
       # finally, perform the reprojection
       r.proj input=elevation project=ll_wgs84 mapset=user1 memory=800

   v.in.region method
       # In the source project, use v.in.region to generate a bounding box around the
       # region of interest:
       v.in.region -d output=bounds type=area
       # Now switch to the target project and import the vector bounding box
       # (you can run v.proj -l to get a list of vector maps in the source project):
       v.proj input=bounds project=source_project_name output=bounds_reprojected
       # Set the region in the target project with that of the newly-imported vector
       # bounds map, and align the resolution to the desired cell resolution of the
       # final, reprojected raster map:
       g.region vector=bounds_reprojected res=5 -a
       # Now reproject the raster into the target project
       r.proj input=elevation.dem output=elevation.dem.reproj \
         project=source_project_name mapset=PERMANENT res=5 method=bicubic

REFERENCES

       1      Evenden, G.I. (1990) Cartographic projection procedures  for  the  UNIX  environment  -  a  user’s
              manual.   USGS  Open-File  Report  90-284  (OF90-284.pdf)  See  also there: Interim Report and 2nd
              Interim Report on Release 4, Evenden 1994).

       2      Richards, John A. (1993), Remote Sensing Digital  Image  Analysis,  Springer-Verlag,  Berlin,  2nd
              edition.

       PROJ: Projection/datum support library

       Further reading

           •   ASPRS Grids and Datum

           •   Projections Transform List (PROJ)

           •   Coordinate operations by PROJ (projections, conversions, transformations, pipeline operator)

           •   MapRef - The Collection of Map Projections and Reference Systems for Europe

           •   Information and Service System for European Coordinate Reference Systems - CRS

SEE ALSO

        g.region, g.proj, i.rectify, m.proj, r.support, r.stats, v.proj, v.in.region

       The ’gdalwarp’ and ’gdal_translate’ utilities are available from the GDAL project.

AUTHORS

       Martin Schroeder, University of Heidelberg, Germany
       Man page text from S.J.D. Cox, AGCRC, CSIRO Exploration & Mining, Nedlands, WA
       Updated by Morten Hulden
       Datum transformation support and cleanup by Paul Kelly
       Support of PROJ5+ by Markus Metz, mundialis

SOURCE CODE

       Available at: r.proj source code (history)

       Accessed: Friday Apr 04 01:19:25 2025

       Main index | Raster index | Topics index | Keywords index | Graphical index | Full index

       © 2003-2025 GRASS Development Team, GRASS GIS 8.4.1 Reference Manual

GRASS 8.4.1                                                                                       r.proj(1grass)