This is work in progress, recently started, and presented here in order to initiate discussion on the proj.4 discussion forum.
The authors and copyright holders disclaim all liability (cf. the licence), and you should use this code for testing purposes only.
Despite the title of the document, this is not really a user's guide. Rather, it's a brief rationale, followed by a few examples — just enough to get you going, but not at all in depth (basically, because there is not yet that much depth to get into).
If you find
tran potentially useful, intriguing, or just plain
annoying, please take part and air your opinion on the proj forum:
tran and it's underlying
proj library functionality will improve and take
shape from your input.
program provides somewhat similar functionality as
cs2cs program of the
proj.4 system, which
carries out geodetic transformations between different
reference frames (datums), using WGS84 as pivot datum.
But historically, transformations have often been introduced as direct gateways (i.e. not taking the detour through a pivot datum) from one system to another, e.g. when national reference systems have been updated or redefined.
Typically, a transformation consists of a number of steps, e.g. first going from a projected coordinate system to a geographic, then from geographic to 3D cartesian, then through a Helmert shift / polynomial correction / nadcon style grid interpolation, and finally back again to projected coordinates using the conjugate operations.
Hence, a transformation can often be described as a number of pipeline style cascaded steps, each doing a single part of the transformation, which is well defined and easily described, whereas the overall transformation may be much harder to describe in terms of metadata.
To take advantage of this typical characteristic of geodetic transformations,
tran introduces the
+step keyword and the
+proj=pipelineintroduces a pipeline consisting of multiple steps.
- Each step starts with the
+invqualifier indicates that the corresponding step should be carried out using its inverse method.
In its simplest configuration, tran reads coordinate triplets in easting, northing, height / longitude, latitude, height order, e.g. 610000 6100000 61 or 12 55 67.
Example 1: From UTM to geocentic cartesian
tran -v +proj=pipeline +ellps=GRS80 +zone=32 \ +step +proj=utm +inv \ +step +proj=cart
The options following immediately after
are global: They are made available to all following steps, which
may use, ignore, or overwrite them.
+proj=utm +inv asks utm to run in reverse, reading
projected coordinates, and providing geographical.
+proj=cart converts geodetic coordinates to cartesian.
Example 2: From UTM to geocentric cartesian and back again
tran -v +proj=pipeline +ellps=GRS80 +zone=32 \ +step +proj=utm +inv \ +step +proj=cart \ +step +proj=cart +inv \ +step +proj=utm
Example 3: From UTM to geocentric cartesian and back again in a different datum
tran -v +proj=pipeline +ellps=GRS80 +zone=32 \ +step +proj=utm +inv \ +step +proj=cart \ +step +proj=helmert +x=102 +y=102 +z=129 +rx=-400 +ry=200 +rz=-400 +s=-2.5 \ +step +proj=cart +ellps=intl +inv \ +step +proj=utm +ellps=intl
Here the last two steps introduce a new ellipsoid, hence overwrites the GRS80 provided in the global options.