Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RHUMBSOLVE(1)		     GeographicLib Utilities		   RHUMBSOLVE(1)

NAME
     RhumbSolve -- perform rhumb line calculations

SYNOPSIS
     RhumbSolve [ -i | -L lat1 lon1 azi12 ] [ -e a f ] [ -u ] [ -d | -: ] [ -w ]
     [	-p prec ] [ -E ] [ --comment-delimiter commentdelim ] [ --version | -h |
     --help ] [ --input-file infile | --input-string instring ] [ --line-separa-
     tor linesep ] [ --output-file outfile ]

DESCRIPTION
     The path with constant heading between  two  points  on  the  ellipsoid  at
     (lat1,  lon1)  and (lat2, lon2) is called the rhumb line or loxodrome.  Its
     length is s12 and the rhumb line has a  forward  azimuth  azi12  along  its
     length.   The  quantity S12 is the area between the rhumb line from point 1
     to point 2 and the equator; i.e., it is the area,	measured  counter-clock-
     wise,  of	the  geodesic  quadrilateral with corners (lat1,lon1), (0,lon1),
     (0,lon2), and (lat2,lon2).  The  longitude  becomes  indeterminate  when  a
     rhumb  line passes through a pole, and RhumbSolve reports NaNs for the lon-
     gitude and the area in this case.

     NOTE: the rhumb line is not the shortest path between two points;	that  is
     the geodesic and it is calculated by GeodSolve(1).

     RhumbSolve operates in one of three modes:

     1.  By  default,  RhumbSolve accepts lines on the standard input containing
	 lat1 lon1 azi12 s12 and prints lat2 lon2 S12 on standard output.   This
	 is the direct calculation.

     2.  With the -i command line argument, RhumbSolve performs the inverse cal-
	 culation.  It reads lines containing lat1 lon1 lat2 lon2 and prints the
	 values of azi12 s12 S12 for the corresponding shortest rhumb lines.

     3.  Command line arguments -L lat1 lon1 azi12 specify a rhumb line.  Rhumb-
	 Solve	then accepts a sequence of s12 values (one per line) on standard
	 input and prints lat2 lon2 S12 for each.  This generates a sequence  of
	 points on a rhumb line.

OPTIONS
     -i  perform an inverse calculation (see 2 above).

     -L lat1 lon1 azi12
	 line  mode (see 3 above); generate a sequence of points along the rhumb
	 line specified by lat1 lon1 azi12.  The -w flag can be used to swap the
	 default order of the 2 geographic coordinates, provided that it appears
	 before -L.

     -e a f
	 specify the ellipsoid via the equatorial radius, a and the  flattening,
	 f.  Setting f = 0 results in a sphere.  Specify f < 0 for a prolate el-
	 lipsoid.   A  simple  fraction,  e.g., 1/297, is allowed for f.  By de-
	 fault, the WGS84 ellipsoid is used, a = 6378137 m, f = 1/298.257223563.

     -u  unroll the longitude.	Normally, on output longitudes	are  reduced  to
	 lie in [-180deg,180deg).  However with this option, the returned longi-
	 tude  lon2 is "unrolled" so that lon2 - lon1 indicates how often and in
	 what sense the geodesic has encircled the earth.

     -d  output angles as degrees, minutes, seconds instead of decimal degrees.

     -:  like -d, except use : as a separator instead of the d, ', and "  delim-
	 iters.

     -w  on  input and output, longitude precedes latitude (except that on input
	 this can be overridden by a hemisphere designator, N, S, E, W).

     -p prec
	 set the output precision to prec (default 3);	prec  is  the  precision
	 relative to 1 m.  See "PRECISION".

     -E  By  default,  the  rhumb line calculations are carried out using series
	 expansions valid for |f| < 0.01.  If -E is  supplied,	exact  equations
	 for  the  rhumb line are used and the area integral is computed with an
	 accurate fit based on this exact equations; these are valid  for  arbi-
	 trary eccentricities.

     --comment-delimiter commentdelim
	 set the comment delimiter to 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).

     --version
	 print version and exit.

     -h  print usage and exit.

     --help
	 print full documentation and exit.

     --input-file infile
	 read  input from the file infile instead of from standard input; a file
	 name of "-" stands for standard input.

     --input-string instring
	 read input from the string instring instead  of  from	standard  input.
	 All  occurrences  of  the  line separator character (default is a semi-
	 colon) in instring are converted to newlines before the reading begins.

     --line-separator linesep
	 set the line separator character to linesep.	By  default  this  is  a
	 semicolon.

     --output-file outfile
	 write	output to the file outfile instead of to standard output; a file
	 name of "-" stands for standard output.

INPUT
     RhumbSolve measures all angles in degrees, all lengths (s12) in meters, and
     all areas (S12) in meters^2.  On input  angles  (latitude,  longitude,  az-
     imuth,  arc length) can be as decimal degrees or degrees, minutes, seconds.
     For example, "40d30", "40d30'", "40:30", "40.5d", and 40.5 are all  equiva-
     lent.   By default, latitude precedes longitude for each point (the -w flag
     switches this convention); however on input either may be	given  first  by
     appending	(or  prepending) N or S to the latitude and E or W to the longi-
     tude.  Azimuths are measured clockwise from  north;  however  this  may  be
     overridden with E or W.

     For  details on the allowed formats for angles, see the "GEOGRAPHIC COORDI-
     NATES" section of GeoConvert(1).

PRECISION
     prec gives precision of the output with prec = 0 giving 1 m precision, prec
     = 3 giving 1 mm precision, etc.  prec is the number  of  digits  after  the
     decimal point for lengths.  For decimal degrees, the number of digits after
     the  decimal  point is prec + 5.  For DMS (degree, minute, seconds) output,
     the number of digits after the decimal point in the  seconds  component  is
     prec + 1.	The minimum value of prec is 0 and the maximum is 10.

ERRORS
     An illegal line of input will print an error message to standard output be-
     ginning  with  "ERROR:"  and causes RhumbSolve to return an exit code of 1.
     However, an error does not cause RhumbSolve to terminate;	following  lines
     will be converted.

ACCURACY
     The algorithm used by RhumbSolve uses either series expansions or (if -E is
     specified) exact formulas for computing the rhumb line and the area.  These
     series  are formulas are accurate for |f| < 0.01 and the exact formulas ap-
     ply for any value of the flattening.  The computation of  rhumb  lines  and
     the  area	involves the ratio of differences and, for nearly east- or west-
     going rhumb lines, this might result in a large loss of accuracy.	However,
     this problem is avoided by the use of divided differences.  For  the  WGS84
     ellipsoid, the error is about 10 nanometers using either method.

EXAMPLES
     Route from JFK Airport to Singapore Changi Airport:

	echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
	RhumbSolve -i -: -p 0

	103:34:58.2 18523563 45921660958919

     N.B. This is not the route typically taken by aircraft because it's consid-
     erably longer than the geodesic given by GeodSolve(1).

     Waypoints on the route at intervals of 2000km:

	for ((i = 0; i <= 20; i += 2)); do echo ${i}000000;done |
	RhumbSolve -L 40:38:23N 073:46:44W 103:34:58.2 -: -p 0

	40:38:23.0N 073:46:44.0W 0
	36:24:30.3N 051:28:26.4W 9817078307821
	32:10:26.8N 030:20:57.3W 18224745682005
	27:56:13.2N 010:10:54.2W 25358020327741
	23:41:50.1N 009:12:45.5E 31321269267102
	19:27:18.7N 027:59:22.1E 36195163180159
	15:12:40.2N 046:17:01.1E 40041499143669
	10:57:55.9N 064:12:52.8E 42906570007050
	06:43:07.3N 081:53:28.8E 44823504180200
	02:28:16.2N 099:24:54.5E 45813843358737
	01:46:36.0S 116:52:59.7E 45888525219677

SEE ALSO
     GeoConvert(1), GeodSolve(1).

     An  online  version  of  this  utility is availbable at <https://geographi-
     clib.sourceforge.io/cgi-bin/RhumbSolve>.

SEE ALSO
     GeoConvert(1).

     An online version of this	utility  is  availbable  at  <https://geographi-
     clib.sourceforge.io/cgi-bin/GeodSolve>.

     This  solution  for rhumb line is described in C. F. F. Karney, The area of
     rhumb  polygons,  Technical  Report,   SRI   International   (2023);   URL:
     <https://arxiv.org/abs/2303.03219>.

     The Wikipedia page, Rhumb line, <https://en.wikipedia.org/wiki/Rhumb_line>.

AUTHOR
     RhumbSolve was written by Charles Karney.

HISTORY
     RhumbSolve   was  added  to  GeographicLib,  <https://geographiclib.source-
     forge.io>, in version 1.37 and substantially rewritten in version 2.2.

GeographicLib 2.2		   2023-03-07			   RHUMBSOLVE(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RhumbSolve&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help