Your company here — click to reach over 10,000 unique daily visitors

cct - Man Page

Coordinate Conversion and Transformation


cct [-cIostvz [args]] +opt[=arg] ... file ...


cct [-cIostvz [args]] {object_definition} file ...

Where {object_definition} is one of the possibilities accepted by proj_create(), provided it expresses a coordinate operation

  • a proj-string,
  • a WKT string,
  • an object code (like "EPSG:1671" "urn:ogc:def:coordinateOperation:EPSG::1671"),
  • an object name. e.g. "ITRF2014 to ETRF2014 (1)". In that case as uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
  • a OGC URN combining references for concatenated operations (e.g. "urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618")
  • a PROJJSON string. The jsonschema is at https://proj.org/schemas/v0.4/projjson.schema.json

New in version 8.0.0.


Before version 8.0.0 only proj-strings could be used to instantiate operations in cct.


cct [-cIostvz [args]] {object_reference} file ...

where {object_reference} is a filename preceded by the '@' character.  The file referenced by the {object_reference} must contain a valid {object_definition}.

New in version 8.0.0.


cct is a 4D equivalent to the proj projection program, performs transformation coordinate systems on a set of input points. The coordinate system transformation can include translation between projected and geographic coordinates as well as the application of datum shifts.

Note however that unlike the proj, angular input must be in decimal degrees. Any minutes and seconds given will be silently dropped.

The following control parameters can appear in any order:

-c <x,y,z,t>

Specify input columns for (up to) 4 input parameters. Defaults to 1,2,3,4.

-d <n>

New in version 5.2.0.

Specify the number of decimals to round to in the output.


Do the inverse transformation.

-o <output file name>, --output=<output file name>

Specify the name of the output file.

-t <time>, --time=<time>

Specify a fixed observation time to be used for all input data.

-z <height>, --height=<height>

Specify a fixed observation height to be used for all input data.

-s <n>, --skip-lines=<n>

New in version 5.1.0.

Skip the first n lines of input. This applies to any kind of input, whether it comes from STDIN, a file or interactive user input.

-v,  --verbose

Write non-essential, but potentially useful, information to stderr. Repeat for additional information (-vv, -vvv, etc.)


Print version number.

The +opt arguments are associated with coordinate operation parameters. Usage varies with operation.

cct is an acronym meaning Coordinate Conversion and Transformation.

The acronym refers to definitions given in the OGC 08-015r2/ISO-19111 standard "Geographical Information -- Spatial Referencing by Coordinates", which defines two different classes of coordinate operations:

Coordinate Conversions, which are coordinate operations where input and output datum are identical (e.g. conversion from geographical to cartesian coordinates) and

Coordinate Transformations, which are coordinate operations where input and output datums differ (e.g. change of reference frame).

Use of Remote Grids

New in version 7.0.0.

If the PROJ_NETWORK environment variable is set to ON, cct will attempt to use remote grids stored on CDN (Content Delivery Network) storage, when they are not available locally.

More details are available in the Network capabilities section.



The operator specs describe the action to be performed by cct. So the following script

echo 12 55 0 0 | cct +proj=utm +zone=32 +ellps=GRS80

will transform the input geographic coordinates into UTM zone 32 coordinates. Hence, the command

echo 12 55 | cct -z0 -t0 +proj=utm +zone=32 +ellps=GRS80

Should give results comparable to the classic proj command

echo 12 55 | proj +proj=utm +zone=32 +ellps=GRS80

Convert geographical input to UTM zone 32 on the GRS80 ellipsoid:

cct +proj=utm +ellps=GRS80 +zone=32

Roundtrip accuracy check for the case above:

cct +proj=pipeline +ellps=GRS80 +zone=32 +step +proj=utm +step +proj=utm +inv

As (2) but specify input columns for longitude, latitude, height and time:

cct -c 5,2,1,4 +proj=utm +ellps=GRS80 +zone=32

As (2) but specify fixed height and time, hence needing only 2 cols in input:

cct -t 0 -z 0 +proj=utm +ellps=GRS80 +zone=32

Auxiliary data following the coordinate input is forwarded to the output stream:

$ echo 12 56 100 2018.0 auxiliary data | cct +proj=merc
1335833.8895   7522963.2411      100.0000     2018.0000 auxiliary data

Coordinate operation referenced through its code

$ echo 3541657.3778 948984.2343 5201383.5231 2020.5 | cct EPSG:8366
3541657.9112    948983.7503  5201383.2482     2020.5000

Coordinate operation referenced through its name

$ echo 3541657.3778 948984.2343 5201383.5231 2020.5 | cct "ITRF2014 to ETRF2014 (1)"
3541657.9112    948983.7503  5201383.2482     2020.5000


cct also refers to Carl Christian Tscherning (1942--2014), professor of Geodesy at the University of Copenhagen, mentor and advisor for a generation of Danish geodesists, colleague and collaborator for two generations of global geodesists, Secretary General for the International Association of Geodesy, IAG (1995--2007), fellow of the American Geophysical Union (1991), recipient of the IAG Levallois Medal (2007), the European Geosciences Union Vening Meinesz Medal (2008), and of numerous other honours.

cct, or Christian, as he was known to most of us, was recognized for his good mood, his sharp wit, his tireless work, and his great commitment to the development of geodesy -- both through his scientific contributions, comprising more than 250 publications, and by his mentoring and teaching of the next generations of geodesists.

As Christian was an avid Fortran programmer, and a keen Unix connoisseur, he would have enjoyed to know that his initials would be used to name a modest Unix style transformation filter, hinting at the tireless aspect of his personality, which was certainly one of the reasons he accomplished so much, and meant so much to so many people.

Hence, in honour of cct (the geodesist) this is cct (the program).

See Also

proj(1), cs2cs(1), geod(1), gie(1), projinfo(1), projsync(1)


A list of known bugs can be found at https://github.com/OSGeo/PROJ/issues where new bug reports can be submitted to.

Home Page



Thomas Knudsen

Referenced By

cs2cs(1), geod(1), gie(1), proj(1), projinfo(1), projsync(1).

01 Jun 2024 9.4.1 PROJ