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

FreeBSD Manual Pages

  
 
  

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

NAME
     GeoConvert -- convert geographic coordinates

SYNOPSIS
     GeoConvert  [ -g | -d | -: | -u | -m | -c ] [ -z zone | -s | -t | -S | -T ]
     [ -n ] [ -w ] [ -p prec ] [ -l | -a ] [ --comment-delimiter commentdelim  ]
     [ --version | -h | --help ] [ --input-file infile | --input-string instring
     ] [ --line-separator linesep ] [ --output-file outfile ]

DESCRIPTION
     GeoConvert reads from standard input interpreting each line as a geographic
     coordinate and prints the coordinate in the format specified by the options
     on  standard  output.   The  input is interpreted in one of three different
     ways depending on how many space or comma delimited tokens there are on the
     line.  The options -g, -d, -u, and -m govern the format of output.  In  all
     cases,  the  WGS84  model	of  the  earth	is  used  (a  =  6378137  m, f =
     1/298.257223563).

     geographic
	 2 tokens (output options -g, -d, or -:) given as latitude longitude us-
	 ing decimal degrees or degrees,  minutes,  and  seconds.   Latitude  is
	 given	first  (unless the -w option is given).  See "GEOGRAPHIC COORDI-
	 NATES" for a description of the format.  For example, the following are
	 all equivalent

	     33.3 44.4
	     E44.4 N33.3
	     33d18'N 44d24'E
	     44d24 33d18N
	     33:18 +44:24

     UTM/UPS
	 3 tokens (output option -u) given as zone+hemisphere  easting	northing
	 or  easting  northing zone+hemisphere, where hemisphere is either n (or
	 north) or s (or south).  The zone is absent for  a  UPS  specification.
	 For example,

	     38n 444140.54 3684706.36
	     444140.54 3684706.36 38n
	     s 2173854.98 2985980.58
	     2173854.98 2985980.58 s

     MRGS1  token  (output  option  -m) is used to specify the center of an MGRS
	 grid square.  For example,

	     38SMB4484
	     38SMB44140847064

OPTIONS
     -g  output latitude and longitude using decimal  degrees.	 Default  output
	 mode.

     -d  output  latitude  and	longitude  using  degrees,  minutes, and seconds
	 (DMS).

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

     -u  output UTM or UPS.

     -m  output MGRS.

     -c  output  meridian convergence and scale for the corresponding UTM or UPS
	 projection.  The meridian convergence is  the	bearing  of  grid  north
	 given as degrees clockwise from true north.

     -z zone
	 set  the  zone to zone for output.  Use either 0 < zone <= 60 for a UTM
	 zone or zone = 0 for UPS.  Alternatively use a zone+hemisphere designa-
	 tion, e.g., 38n.  See "ZONE".

     -s  use the standard UPS and UTM zones.

     -t  similar to -s but forces UPS regions to the closest UTM zone.

     -S or -T
	 behave the same as -s and -t, respectively, until the first legal  con-
	 version  is  performed.  For subsequent points, the zone and hemisphere
	 of that conversion are used.  This enables a sequence of points  to  be
	 converted into UTM or UPS using a consistent coordinate system.

     -n  on  input,  MGRS coordinates refer to the south-west corner of the MGRS
	 square instead of the center; see "MGRS".

     -w  toggle the longitude first flag (it starts off); if  the  flag  is  on,
	 then  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 0);	prec  is  the  precision
	 relative to 1 m.  See "PRECISION".

     -l  on output, UTM/UPS uses the long forms north and south to designate the
	 hemisphere instead of n or s.

     -a  on  output,  UTM/UPS  uses  the  abbreviations n and s to designate the
	 hemisphere instead of north or south; this is the  default  representa-
	 tion.

     --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.

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 UTM/UPS.  For MGRS, The number of digits per coordinate
     is 5 + prec; prec = -6 results in just the grid zone.  For decimal degrees,
     the number of digits after the decimal point is 5 + prec.	For DMS (degree,
     minute, seconds) output, the number of digits after the  decimal  point  in
     the  seconds  components  is 1 + prec; if this is negative then use minutes
     (prec = -2 or -3) or degrees (prec <= -4) as the least  significant  compo-
     nent.   Print convergence, resp. scale, with 5 + prec, resp. 7 + prec, dig-
     its after the decimal point.  The minimum value of prec is -5 (-6 for MGRS)
     and the maximum is 9 for UTM/UPS, 9 for decimal degrees, 10 for DMS, 6  for
     MGRS, and 8 for convergence and scale.

GEOGRAPHIC COORDINATES
     The  utility  accepts  geographic coordinates, latitude and longitude, in a
     number of common formats.	Latitude precedes longitude, unless the  -w  op-
     tion  is given which switches this convention.  On input, either coordinate
     may be given first by appending or prepending N or S to the latitude and  E
     or W to the longitude.  These hemisphere designators carry an implied sign,
     positive  for  N  and E and negative for S and W.	This sign multiplies any
     +/- sign prefixing the coordinate.  The coordinates may be given as decimal
     degree or as degrees, minutes, and seconds.  d, ', and " are used to denote
     degrees, minutes, and seconds, with the least  significant  designator  op-
     tional.  (See "QUOTING" for how to quote the characters ' and " when enter-
     ing coordinates on the command line.)  Alternatively, : (colon) may be used
     to separate the various components.  Only the final component of coordinate
     can include a decimal point, and the minutes and seconds components must be
     less than 60.

     It is also possible to carry out addition or subtraction operations in geo-
     graphic  coordinates.  If the coordinate includes interior signs (i.e., not
     at the beginning or immediately after an  initial	hemisphere  designator),
     then the coordinate is split before such signs; the pieces are parsed sepa-
     rately  and  the results summed.  For example the point 15" east of 39N 70W
     is

	 39N 70W+0:0:15E

     WARNING: "Exponential" notation is not recognized	for  geographic  coordi-
     nates.   Thus  7.0E1  is  illegal, while 7.0E+1 is parsed as (7.0E) + (+1),
     yielding the same result as 8.0E.

     Various unicode characters (encoded with UTF-8) may also be used to  denote
     degrees,  minutes,  and  seconds, e.g., the degree, prime, and double prime
     symbols; in addition two single quotes can be used to represent ".

     The other GeographicLib utilities use the same rules for interpreting  geo-
     graphic  coordinates; in addition, azimuths and arc lengths are interpreted
     the same way.

QUOTING
     Unfortunately the characters ' and " have special meanings in  many  shells
     and  have to be entered with care.  However note (1) that the trailing des-
     ignator is optional and that (2) you can use colons as a separator  charac-
     ter.  Thus 10d20' can be entered as 10d20 or 10:20 and 10d20'30" can be en-
     tered as 10:20:30.

     Unix shells (sh, bash, tsch)
	 The  characters ' and " can be quoted by preceding them with a \ (back-
	 slash); or you can quote a string containing ' with a pair of "s.   The
	 two alternatives are illustrated by

	    echo 10d20\'30\" "20d30'40" | GeoConvert -d -p -1
	    => 10d20'30"N 020d30'40"E

	 Quoting of command line arguments is similar

	    GeoConvert -d -p -1 --input-string "10d20'30\" 20d30'40"
	    => 10d20'30"N 020d30'40"E

     Windows command shell (cmd)
	 The  ' character needs no quoting; the " character can either be quoted
	 by a ^ or can be represented by typing ' twice.  (This quoting is  usu-
	 ally unnecessary because the trailing designator can be omitted.)  Thus

	    echo 10d20'30'' 20d30'40 | GeoConvert -d -p -1
	    => 10d20'30"N 020d30'40"E

	 Use \ to quote the " character in a command line argument

	    GeoConvert -d -p -1 --input-string "10d20'30\" 20d30'40"
	    => 10d20'30"N 020d30'40"E

     Input from a file
	 No  quoting  need  be done if the input from a file.  Thus each line of
	 the file "input.txt" should just contain the plain coordinates.

	   GeoConvert -d -p -1 < input.txt

MGRS
     MGRS coordinates represent a square patch of the earth, thus "38SMB4488" is
     in zone "38n" with 444km <= easting  <  445km  and  3688km  <=  northing  <
     3689km.   Consistent  with  this  representation, coordinates are truncated
     (instead of rounded) to the requested precision.  When an	MGRS  coordinate
     is  provided  as  input,  GeoConvert  treats this as a representative point
     within the square.  By default, this representative point is the center  of
     the  square  ("38n 444500 3688500" in the example above).	(This leads to a
     stable conversion between MGRS and geographic  coordinates.)   However,  if
     the -n option is given then the south-west corner of the square is returned
     instead ("38n 444000 3688000" in the example above).

ZONE
     If the input is geographic, GeoConvert uses the standard rules of selecting
     UTM vs UPS and for assigning the UTM zone (with the Norway and Svalbard ex-
     ceptions).   If  the  input is UTM/UPS or MGRS, then the choice between UTM
     and UPS and the UTM zone mirrors the input.  The -z zone, -s,  and  -t  op-
     tions  allow these rules to be overridden with zone = 0 being used to indi-
     cate UPS.	For example, the point

	79.9S 6.1E

     corresponds to possible MGRS coordinates

	32CMS4324728161 (standard UTM zone = 32)
	31CEM6066227959 (neighboring UTM zone = 31)
	  BBZ1945517770 (neighboring UPS zone)

     then

	echo 79.9S 6.1E      | GeoConvert -p -3 -m	 => 32CMS4328
	echo 31CEM6066227959 | GeoConvert -p -3 -m	 => 31CEM6027
	echo 31CEM6066227959 | GeoConvert -p -3 -m -s	 => 32CMS4328
	echo 31CEM6066227959 | GeoConvert -p -3 -m -z 0  =>   BBZ1917

     Is zone is specified with a hemisphere, then this is honored when	printing
     UTM coordinates:

	echo -1 3 | GeoConvert -u	  => 31s 500000 9889470
	echo -1 3 | GeoConvert -u -z 31   => 31s 500000 9889470
	echo -1 3 | GeoConvert -u -z 31s  => 31s 500000 9889470
	echo -1 3 | GeoConvert -u -z 31n  => 31n 500000 -110530

     NOTE: the letter in the zone specification for UTM is a hemisphere designa-
     tor n or s and not an MGRS latitude band letter.  Convert the MGRS latitude
     band  letter  to a hemisphere as follows: replace C thru M by s (or south);
     replace N thru X by n (or north).

EXAMPLES
	echo 38SMB4488 | GeoConvert	    => 33.33424 44.40363
	echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E
	echo 38SMB4488 | GeoConvert -u	    => 38n 444500 3688500
	echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488

     GeoConvert can be used to do simple arithmetic using degree,  minutes,  and
     seconds.	For example, sometimes data is tiled in 15 second squares tagged
     by the DMS representation of the SW  corner.   The  tags  of  the	tile  at
     38:59:45N 077:02:00W and its 8 neighbors are then given by

	 t=0:0:15
	 for y in -$t +0 +$t; do
	     for x in -$t +0 +$t; do
		 echo 38:59:45N$y 077:02:00W$x
	     done
	 done | GeoConvert -: -p -1 | tr -d ': '
	 =>
	 385930N0770215W
	 385930N0770200W
	 385930N0770145W
	 385945N0770215W
	 385945N0770200W
	 385945N0770145W
	 390000N0770215W
	 390000N0770200W
	 390000N0770145W

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

ABBREVIATIONS
     UTM Universal  Transverse	Mercator, <https://en.wikipedia.org/wiki/Univer-
	 sal_Transverse_Mercator_coordinate_system>.

     UPS Universal Polar  Stereographic,  <https://en.wikipedia.org/wiki/Univer-
	 sal_Polar_Stereographic>.

     MGRSMilitary  Grid  Reference  System, <https://en.wikipedia.org/wiki/Mili-
	 tary_grid_reference_system>.

     WGS84
	 World Geodetic System 1984, <https://en.wikipedia.org/wiki/WGS84>.

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

     The  algorithms  for the transverse Mercator projection are described in C.
     F. F. Karney, Transverse Mercator with an accuracy of a few nanometers,  J.
     Geodesy	     85(8),	   475-485	  (Aug.        2011);	     DOI
     <https://doi.org/10.1007/s00190-011-0445-3>;			preprint
     <https://arxiv.org/abs/1002.1417>.

AUTHOR
     GeoConvert was written by Charles Karney.

HISTORY
     GeoConvert   was  added  to  GeographicLib,  <https://geographiclib.source-
     forge.io>, in 2009-01.

GeographicLib 2.2		   2022-12-13			   GEOCONVERT(1)

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

home | help