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

FreeBSD Manual Pages

  
 
  

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

NAME
     Planimeter -- compute the area of geodesic polygons

SYNOPSIS
     Planimeter  [  -r ] [ -s ] [ -l ] [ -e a f ] [ -w ] [ -p prec ] [ -G | -Q |
     -R ] [ -E ] [ --geoconvert-input ] [ --comment-delimiter commentdelim  ]  [
     --version | -h | --help ] [ --input-file infile | --input-string instring ]
     [ --line-separator linesep ] [ --output-file outfile ]

DESCRIPTION
     Measure  the area of a geodesic polygon.  Reads polygon vertices from stan-
     dard input, one per line.	Vertices are be given as latitude and longitude.
     By default latitude precedes longitude, however this convention is reversed
     with the -w flag and a hemisphere designator (N, S, E, W) can  be	used  to
     disambiguate  the	coordinates.   The end of input, a blank line, or a line
     which can't be interpreted as a vertex signals the end of one  polygon  and
     the start of the next.  For each polygon print a summary line with the num-
     ber of points, the perimeter (in meters), and the area (in meters^2).

     The edges of the polygon are given by the shortest geodesic (or rhumb line)
     between  consecutive  vertices.  In certain cases, there may be two or many
     such shortest path, and in that case, the polygon is not uniquely specified
     by its vertices.  For geodesics, this only happens  with  very  long  edges
     (for the WGS84 ellipsoid, any edge shorter than 19970 km is uniquely speci-
     fied  by  its end points).  In such cases, insert an additional vertex near
     the middle of the long edge to define the boundary of the polygon.

     By default, polygons traversed in a counter-clockwise  direction  return  a
     positive  area  and those traversed in a clockwise direction return a nega-
     tive area.  This sign convention is reversed if the -r option is given.

     Of course, encircling an area in the clockwise direction is  equivalent  to
     encircling  the  rest  of the ellipsoid in the counter-clockwise direction.
     The default interpretation used by Planimeter is the one that results in  a
     smaller  magnitude of area; i.e., the magnitude of the area is less than or
     equal to one half the total area of the ellipsoid.  If  the  -s  option  is
     given,  then  the interpretation used is the one that results in a positive
     area; i.e., the area is positive and less than the total area of the ellip-
     soid.

     Arbitrarily complex polygons are allowed.	In the case of self-intersecting
     polygons the area is accumulated "algebraically", e.g., the areas of the  2
     loops  in	a  figure-8 polygon will partially cancel.  Polygons may include
     one or both poles.  There is no need to close the polygon.

OPTIONS
     -r  toggle whether counter-clockwise traversal of	the  polygon  returns  a
	 positive (the default) or negative result.

     -s  toggle whether to return a signed result (the default) or not.

     -l  toggle  whether  the  vertices  represent  a polygon (the default) or a
	 polyline.  For a polyline, the number of points and the length  of  the
	 path  joining	them is returned; the path is not closed and the area is
	 not reported.

     -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.
	 If entering vertices as UTM/UPS or MGRS coordinates,  use  the  default
	 ellipsoid,  since  the  conversion of these coordinates to latitude and
	 longitude always uses the WGS84 parameters.

     -w  toggle the longitude first flag (it starts off); if  the  flag  is  on,
	 then  when  reading geographic coordinates, longitude precedes latitude
	 (this can be overridden by a hemisphere designator, N, S, E, W).

     -p prec
	 set the output precision to prec (default 6); the  perimeter  is  given
	 (in meters) with prec digits after the decimal point; the area is given
	 (in meters^2) with (prec - 5) digits after the decimal point.

     -G  the  edges joining the vertices are geodesics.  This is the default op-
	 tion and is recommended for terrestrial applications.	This option, -G,
	 and the following two options, -Q and -R, are mutually exclusive.

     -Q  map the points to the authalic sphere and compute the area of	the  re-
	 sulting  spherical  polygon.  The area will be reasonable accurate pro-
	 vided that the edges are sufficiently short.  The perimeter calculation
	 is not accurate.

     -R  the edges joining the vertices are rhumb lines instead of geodesics.

     -E  use the exact equations for the geodesic -G, authalic -Q, and rhumb  -R
	 calculations  instead of series expansions.  For the geodesic and rhumb
	 methods, the area is computed by applying discrete sine  transforms  to
	 the integrand in the expression for the area.	These are more accurate,
	 albeit  slower, than the (default) series expansions for |f| > 0.02 and
	 will give high accuracy for -99 < f < 0.99.  It  is  not  necessary  to
	 specify this option for terrestrial applications.

     --geoconvert-input
	 The input lines are interpreted in the same way as GeoConvert(1) allow-
	 ing the coordinates for the vertices to be given as UTM/UPS or MGRS co-
	 ordinates,  as well as latitude and longitude.  CAUTION: GeoConvert as-
	 sumes the coordinates refer to the WGS84 ellipsoid (disregarding the -e
	 flag) and MGRS coordinates signify the center of the corresponding MGRS
	 square.

     --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.
	 For a given polygon, the last such string found will be 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.

EXAMPLES
     Example (the area of the 100km MGRS square 18SWK)

	Planimeter --geoconvert-input <<EOF
	18n 500000 4400000
	18n 600000 4400000
	18n 600000 4500000
	18n 500000 4500000
	EOF
	=> 4 400139.532959 10007388597.2

     The following code takes the output from gdalinfo and reports the area cov-
     ered by the data (assuming the edges of the image are geodesics).

	#! /bin/sh
	egrep '^((Upper|Lower) (Left|Right)|Center) ' |
	sed -e 's/d /d/g' -e "s/' /'/g" | tr -s '(),\r\t' ' ' | awk '{
	    if ($1 $2 == "UpperLeft")
		ul = $6 " " $5;
	    else if ($1 $2 == "LowerLeft")
		ll = $6 " " $5;
	    else if ($1 $2 == "UpperRight")
		ur = $6 " " $5;
	    else if ($1 $2 == "LowerRight")
		lr = $6 " " $5;
	    else if ($1 == "Center") {
		printf "%s\n%s\n%s\n%s\n\n", ul, ll, lr, ur;
		ul = ll = ur = lr = "";
	    }
	}
	' | Planimeter | cut -f3 -d' '

ACCURACY
     Using the -G option (the default), the accuracy was estimated by  computing
     the  error in the area for 10^7 approximately regular polygons on the WGS84
     ellipsoid.  The centers and the orientations of the polygons were uniformly
     distributed, the number of vertices was log-uniformly  distributed  in  [3,
     300],  and  the center to vertex distance log-uniformly distributed in [0.1
     m, 9000 km].

     The maximum error in the perimeter was 200 nm, and the maximum error in the
     area was

	0.0013 m^2 for perimeter < 10 km
	0.0070 m^2 for perimeter < 100 km
	0.070 m^2 for perimeter < 1000 km
	0.11 m^2 for all perimeters

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

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

     The  algorithm for the area of geodesic polygon is given in Section 6 of C.
     F. F. Karney, Algorithms for geodesics, J. Geodesy 87,  43-55  (2013);  DOI
     <https://doi.org/10.1007/s00190-012-0578-z>;  addenda:  <https://geographi-
     clib.sourceforge.io/geod-addenda.html>.

     The algorithm for the area of a rhumb polygon is given in Section 3  of  C.
     F.  F.  Karney,  The area of rhumb polygons, Technical Report, SRI Interna-
     tional (2023); URL: <https://arxiv.org/abs/2303.03219>.

AUTHOR
     Planimeter was written by Charles Karney.

HISTORY
     Planimeter  was  added  to  GeographicLib,   <https://geographiclib.source-
     forge.io>, in version 1.4.

GeographicLib 2.2		   2023-03-07			   PLANIMETER(1)

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

home | help