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