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-separator 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-clockwise, 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 longitude 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
	   calculation.	  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.
	   RhumbSolve 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  ellipsoid.	 A  simple  fraction,  e.g., 1/297, is
	   allowed for f.  By default,	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
	   longitude 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  "
	   delimiters.

       -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 arbitrary 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
	   semicolon) 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,
       azimuth,	arc length) can	be as decimal  degrees	or  degrees,  minutes,
       seconds.	  For  example,	 "40d30", "40d30'", "40:30", "40.5d", and 40.5
       are all equivalent.  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 longitude.  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
       COORDINATES" 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
       beginning 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 apply 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
       considerably 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://geographiclib.sourceforge.io/cgi-bin/RhumbSolve>.

SEE ALSO
       GeoConvert(1).

       An    online    version	  of	this	utility	  is   availbable   at
       <https://geographiclib.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.sourceforge.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.0>

home | help