m.transform(1)

NAME
m.transform - Computes a coordinate transformation based on the control points.

KEYWORDS
miscellaneous, transformation, GCP

SYNOPSIS
m.transform
m.transform --help
m.transform [-srx] group=name order=integer [format=string[,string,...]] [input=name] [--help] [--verbose] [--quiet] [--ui]

  Flags:

-s
    Display summary information

-r
    Reverse transform of coords file or coeff. dump
    Target east,north coordinates to local x,y

-x
    Display transform matrix coefficients

--help
    Print usage summary

--verbose
    Verbose module output

--quiet
    Quiet module output

--ui
    Force launching GUI dialog

  Parameters:

group=name [required]
    Name of input imagery group

order=integer [required]
    Rectification polynomial order
    Options: 1-3
    Default: 1

format=string[,string,...]
    Output format
    Options: idx, src, dst, fwd, rev, fxy, rxy, fd, rd
    Default: fd,rd
    idx: point index
    src: source coordinates
    dst: destination coordinates
    fwd: forward coordinates (destination)
    rev: reverse coordinates (source)
    fxy: forward coordinates difference (destination)
    rxy: reverse coordinates difference (source)
    fd: forward error (destination)
    rd: reverse error (source)

input=name
    File containing coordinates to transform ("-" to read from stdin)
    Local x,y coordinates to target east,north

DESCRIPTION
m.transform is an utility to compute transformation based upon GCPs and output error measurements.

If coordinates are given with the input file option or fed from stdin, both the input and the output format is "x y" with one coordinate pair per line. Reverse transform is performed with the -r flag.

The format option determines how control points are printed out. A summary on the control points can be printed with the -s flag. The summary includes maximum deviation observed when transforming GCPs and overall RMS. The format option is ignored when coordinates are given with the input file option.

NOTES
The transformations are:

order=1:

    e = [E0 E1][1]·[1]
        [E2  0][e] [n]
    n = [N0 N1][1]·[1]
        [N2  0][e] [n]

order=2:

    e = [E0 E1 E3][1 ] [1 ]
        [E2 E4  0][e ]·[n ]
        [E5  0  0][e²] [n²]
    n = [N0 N1 N3][1 ] [1 ]
        [N2 N4  0][e ]·[n ]
        [N5  0  0][e²] [n²]

order=3:

    e = [E0 E1 E3 E6][1 ] [1 ]
        [E2 E4 E7  0][e ]·[n ]
        [E5 E8  0  0][e²] [n²]
        [E9  0  0  0][e³] [n³]
    n = [N0 N1 N3 N6][1 ] [1 ]
        [N2 N4 N7  0][e ]·[n ]
        [N5 N8  0  0][e²] [n²]
        [N9  0  0  0][e³] [n³]

["·" = dot-product, (AE)·N = N’EA]

In other words, order=1 and order=2 are equivalent to order=3 with the higher coefficients equal to zero.

SEE ALSO
i.ortho.transform, i.rectify, v.rectify, v.transform

AUTHORS
Brian J. Buckley
Glynn Clements
Hamish Bowman

SOURCE CODE

Available at: m.transform source code (history)

Latest change: Thursday Jul 24 04:25:59 2025 in commit: 7882012b70873fbd1db9a7b3fe0a8e5175f477f5

Main index | Miscellaneous index | Topics index | Keywords index | Graphical index | Full index

© 2003-2026 GRASS Development Team, GRASS 8.5.1dev Reference Manual