174 lines
5.7 KiB
Plaintext
174 lines
5.7 KiB
Plaintext
=head1 NAME
|
|
|
|
TransverseMercatorProj -- perform transverse Mercator projection
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
B<TransverseMercatorProj> [ B<-s> | B<-t> ]
|
|
[ B<-l> I<lon0> ] [ B<-k> I<k0> ] [ B<-r> ]
|
|
[ B<-e> I<a> I<f> ] [ B<-w> ] [ B<-p> I<prec> ]
|
|
[ B<--comment-delimiter> I<commentdelim> ]
|
|
[ B<--version> | B<-h> | B<--help> ]
|
|
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
|
|
[ B<--line-separator> I<linesep> ]
|
|
[ B<--output-file> I<outfile> ]
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Perform the transverse Mercator projections. Convert geodetic
|
|
coordinates to transverse Mercator coordinates. The central meridian is
|
|
given by I<lon0>. The longitude of origin is the equator. The scale on
|
|
the central meridian is I<k0>. By default an implementation of the
|
|
exact transverse Mercator projection is used.
|
|
|
|
Geodetic coordinates are provided on standard input as a set of lines
|
|
containing (blank separated) I<latitude> and I<longitude> (decimal
|
|
degrees or degrees, minutes, seconds); for detils on the allowed
|
|
formats for latitude and longitude, see the C<GEOGRAPHIC COORDINATES>
|
|
section of GeoConvert(1). For each set of geodetic coordinates, the
|
|
corresponding projected easting, I<x>, and northing, I<y>, (meters) are
|
|
printed on standard output together with the meridian convergence
|
|
I<gamma> (degrees) and scale I<k>. The meridian convergence is the
|
|
bearing of grid north (the I<y> axis) measured clockwise from true north.
|
|
|
|
=head1 OPTIONS
|
|
|
|
=over
|
|
|
|
=item B<-s>
|
|
|
|
use the sixth-order Krueger series approximation to the transverse
|
|
Mercator projection instead of the exact projection.
|
|
|
|
=item B<-t>
|
|
|
|
use the exact algorithm with the L</EXTENDED DOMAIN>; this is the
|
|
default.
|
|
|
|
=item B<-l> I<lon0>
|
|
|
|
specify the longitude of origin I<lon0> (degrees, default 0).
|
|
|
|
=item B<-k> I<k0>
|
|
|
|
specify the scale I<k0> on the central meridian (default 0.9996).
|
|
|
|
=item B<-r>
|
|
|
|
perform the reverse projection. I<x> and I<y> are given on standard
|
|
input and each line of standard output gives I<latitude>, I<longitude>,
|
|
I<gamma>, and I<k>.
|
|
|
|
=item B<-e> I<a> I<f>
|
|
|
|
specify the ellipsoid via the equatorial radius, I<a> and
|
|
the flattening, I<f>. Setting I<f> = 0 results in a sphere. Specify
|
|
I<f> E<lt> 0 for a prolate ellipsoid. A simple fraction, e.g., 1/297,
|
|
is allowed for I<f>. By default, the WGS84 ellipsoid is used, I<a> =
|
|
6378137 m, I<f> = 1/298.257223563. If the exact algorithm is used, I<f>
|
|
must be positive.
|
|
|
|
=item B<-w>
|
|
|
|
on input and output, longitude precedes latitude (except that on input
|
|
this can be overridden by a hemisphere designator, I<N>, I<S>, I<E>,
|
|
I<W>).
|
|
|
|
=item B<-p> I<prec>
|
|
|
|
set the output precision to I<prec> (default 6). I<prec> is the number
|
|
of digits after the decimal point for lengths (in meters). For
|
|
latitudes and longitudes (in degrees), the number of digits after the
|
|
decimal point is I<prec> + 5. For the convergence (in degrees) and
|
|
scale, the number of digits after the decimal point is I<prec> + 6.
|
|
|
|
=item B<--comment-delimiter> I<commentdelim>
|
|
|
|
set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
|
|
set, the input lines will be scanned for this delimiter and, if found,
|
|
the delimiter and the rest of the line will be removed prior to
|
|
processing and subsequently appended to the output line (separated by a
|
|
space).
|
|
|
|
=item B<--version>
|
|
|
|
print version and exit.
|
|
|
|
=item B<-h>
|
|
|
|
print usage and exit.
|
|
|
|
=item B<--help>
|
|
|
|
print full documentation and exit.
|
|
|
|
=item B<--input-file> I<infile>
|
|
|
|
read input from the file I<infile> instead of from standard input; a file
|
|
name of "-" stands for standard input.
|
|
|
|
=item B<--input-string> I<instring>
|
|
|
|
read input from the string I<instring> instead of from standard input.
|
|
All occurrences of the line separator character (default is a semicolon)
|
|
in I<instring> are converted to newlines before the reading begins.
|
|
|
|
=item B<--line-separator> I<linesep>
|
|
|
|
set the line separator character to I<linesep>. By default this is a
|
|
semicolon.
|
|
|
|
=item B<--output-file> I<outfile>
|
|
|
|
write output to the file I<outfile> instead of to standard output; a
|
|
file name of "-" stands for standard output.
|
|
|
|
=back
|
|
|
|
=head1 EXTENDED DOMAIN
|
|
|
|
The exact transverse Mercator projection has a I<branch point> on the
|
|
equator at longitudes (relative to I<lon0>) of +/- (1 - I<e>) 90 =
|
|
82.636..., where I<e> is the eccentricity of the ellipsoid. The
|
|
standard convention for handling this branch point is to map positive
|
|
(negative) latitudes into positive (negative) northings I<y>; i.e., a
|
|
branch cut is placed on the equator. With the I<extended> domain, the
|
|
northern sheet of the projection is extended into the south hemisphere
|
|
by pushing the branch cut south from the branch points. See the
|
|
reference below for details.
|
|
|
|
=head1 EXAMPLES
|
|
|
|
echo 0 90 | TransverseMercatorProj
|
|
=> 25953592.84 9997964.94 90 18.40
|
|
echo 260e5 100e5 | TransverseMercatorProj -r
|
|
=> -0.02 90.00 90.01 18.48
|
|
|
|
=head1 ERRORS
|
|
|
|
An illegal line of input will print an error message to standard output
|
|
beginning with C<ERROR:> and causes B<TransverseMercatorProj> to return an exit
|
|
code of 1. However, an error does not cause B<TransverseMercatorProj> to
|
|
terminate; following lines will be converted.
|
|
|
|
=head1 AUTHOR
|
|
|
|
B<TransverseMercatorProj> was written by Charles Karney.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
The algorithms for the transverse Mercator projection are described in
|
|
C. F. F. Karney, I<Transverse Mercator with an accuracy of a few
|
|
nanometers>, J. Geodesy B<85>(8), 475-485 (Aug. 2011); DOI
|
|
L<https://doi.org/10.1007/s00190-011-0445-3>; preprint
|
|
L<https://arxiv.org/abs/1002.1417>. The explanation of the extended
|
|
domain of the projection with the B<-t> option is given in Section 5 of
|
|
this paper.
|
|
|
|
=head1 HISTORY
|
|
|
|
B<TransverseMercatorProj> was added to GeographicLib,
|
|
L<https://geographiclib.sourceforge.io>, in 2009-01.
|
|
Prior to version 1.9 it was called TransverseMercatorTest (and its
|
|
interface was slightly different).
|