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
       standard	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 number 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 specified 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
       negative	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 ellipsoid.

       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  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.  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
	   option 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
	   resulting  spherical	polygon.  The area will	be reasonable accurate
	   provided 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)
	   allowing the	coordinates for	the vertices to	be given as UTM/UPS or
	   MGRS	 coordinates,  as  well	 as  latitude and longitude.  CAUTION:
	   GeoConvert assumes 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
	   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.

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
       covered 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://geographiclib.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://geographiclib.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
       International (2023); URL: <https://arxiv.org/abs/2303.03219>.

AUTHOR
       Planimeter was written by Charles Karney.

HISTORY
       Planimeter	  was	      added	    to		GeographicLib,
       <https://geographiclib.sourceforge.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.0>

home | help