v.rectify(1)

🌸 v.rectify β€” GRASS GIS User's Manual 🌸

okay bestie, so this one is v.rectify from the GRASS GIS User's Manual, and it's genuinely iconic. Let's get into it πŸ’…


✨ NAME ✨

v.rectify β€” rectifies a vector by computing a coordinate transformation for each object in the vector based on the control points.

πŸ”‘ KEYWORDS πŸ”‘

vector, rectify, level1, geometry

πŸ“œ SYNOPSIS πŸ“œ

v.rectify
v.rectify --help
v.rectify [-3orb] input=name output=name  [group=name]   [points=name]
[rmsfile=name]   [order=integer]   [separator=character]   [--overwrite]
[--help]  [--verbose]  [--quiet]  [--ui]

🚩 Flags 🚩

  • -3 β€” performs a 3D transformation πŸ‘‘
  • -o β€” performs an orthogonal 3D transformation
  • -r β€” prints RMS errors prints RMS errors and dips out without rectifying the input map (no rectifying, just receipts πŸ’€)
  • -b β€” do not build topology this one is lowkey advantageous when you're handling a large number of points
  • --overwrite β€” lets output files overwrite existing files (yes she will eat them)
  • --help β€” prints the usage summary
  • --verbose β€” verbose module output (she talks more)
  • --quiet β€” quiet module output (she talks less)
  • --ui β€” force launches the GUI dialog ✨

πŸŽ€ Parameters πŸŽ€

  • input=name [required] β€” name of input vector map or the data source for direct OGR access
  • output=name [required] β€” name for output vector map
  • group=name β€” name of input imagery group
  • points=name β€” name of input file with control points
  • rmsfile=name β€” name of output file with RMS errors (if omitted or '-' output to stdout
  • order=integer β€” rectification polynomial order (1-3) Options: 1-3 Default: 1
  • separator=character β€” field separator for the RMS report Special characters: pipe, comma, space, tab, newline Default: pipe

πŸ’– DESCRIPTION πŸ’–

v.rectify uses control points to calculate a 2D or 3D transformation matrix based on a first, second, or third order polynomial, and then converts x,y(, z) coordinates to standard map coordinates for each object in the vector map. The result? A vector map with a transformed coordinate system, aka a whole different coordinate system than the one it had before it got rectified. glow up fr fr ✨

The -o flag enforces orthogonal rotation (currently for 3D only), where the axes stay orthogonal to each other. Translation: a cube with right angles stays a cube with right angles after transformation. And bestie, that is not guaranteed even with affine (1st order) 3D transformation. So. Yeah. πŸ‘€

Great care should be taken with the placement of Ground Control Points. For 2D transformation, the control points must not lie on a line β€” instead 3 of the control points must form a triangle. For 3D transformation, the control points must not lie on a plane β€” instead 4 of the control points must form a triangular pyramid. It is recommended to investigate RMS errors and deviations of the Ground Control Points prior to transformation. like please check first, don't just send it 😭

2D Ground Control Points can be identified in g.gui.gcp.

3D Ground Control Points must be provided in a text file with the points option. The 3D format is equivalent to the format for 2D ground control points with an additional third coordinate:

x y z east north height status

where x, y, z are source coordinates, east, north, height are target coordinates, and status (0 or 1) indicates whether a given point should be used. Numbers must be separated by space and must use a point (.) as decimal separator. periodt. πŸ’…

If no group is given, the rectified vector will be written to the current mapset. If a group is given and a target has been set for this group with i.target, the rectified vector will be written to the target project and mapset. πŸ¦‹

🌈 Coordinate transformation and RMSE 🌈

The desired order of transformation (1, 2, or 3) is selected with the order option. v.rectify will calculate the RMSE if the -r flag is given and print out statistics in tabular format. The last row gives a summary with the first column holding the number of active points, followed by average deviations for each dimension and both forward and backward transformation, and finally forward and backward overall RMSE. it's giving data πŸ’…

πŸ“ 2D linear affine transformation (1st order transformation)

x’ = a1 + b1 * x + c1 * y
y’ = a2 + b2 * x + c2 * y

🧊 3D linear affine transformation (1st order transformation)

x’ = a1 + b1 * x + c1 * y + d1 * z
y’ = a2 + b2 * x + c2 * y + d2 * z
z’ = a3 + b3 * x + c3 * y + d3 * z

The a,b,c,d coefficients are determined by least squares regression based on the control points entered. This transformation applies scaling, translation and rotation. It is NOT a general purpose rubber-sheeting, nor is it ortho-photo rectification using a DEM, not second order polynomial, etc. It can be used if (1) you have geometrically correct data, and (2) the terrain or camera distortion effect can be ignored. like, know what you're getting into bestie πŸ™ˆ

πŸŽ€ Polynomial Transformation Matrix (2nd, 3d order transformation) πŸŽ€

v.rectify uses a first, second, or third order transformation matrix to calculate the registration coefficients. The minimum number of control points required for a 2D transformation of the selected order (represented by n) is

((n + 1) * (n + 2) / 2)

or 3, 6, and 10 respectively. For a 3D transformation of first, second, or third order, the minimum number of required control points is 4, 10, and 20, respectively. It is strongly recommended that more than the minimum number of points be identified, to allow for an overly-determined transformation calculation which will generate the Root Mean Square (RMS) error values for each included point. The polynomial equations are determined using a modified Gaussian elimination method. math ate, no cap πŸ’œ


πŸ‘€ SEE ALSO πŸ‘€

The GRASS 4 Image Processing manual

g.gui.gcp, i.group, i.rectify, i.target, m.transform, r.proj, v.proj, v.transform

Manage Ground Control Points


πŸ‘‘ AUTHOR πŸ‘‘

Markus Metz

based on i.rectify


πŸ’Ύ SOURCE CODE πŸ’Ύ

Available at: v.rectify source code (history)

Accessed: Saturday Jan 17 05:41:30 2026

Main index | Vector index | Topics index | Keywords index | Graphical index | Full index


and that's the whole page bestie!! this was v.rectify from GRASS 8.4.2 β€” yep, the GRASS GIS 8.4.2 Reference Manual, Β© 2003-2025 GRASS Development Team, accessed Saturday Jan 17 05:41:30 2026 πŸ’– go forth and rectify, you got this 🫢✨

πŸ“¦ where this page comes from