=head1 NAME

ConicProj -- perform conic projections

=head1 SYNOPSIS

B<ConicProj> ( B<-c> | B<-a> ) I<lat1> I<lat2>
[ B<-l> I<lon0> ] [ B<-k> I<k1> ] [ B<-r> ]
[ B<-e> I<a> I<f> ] [ B<-w> ] [ B<-p> I<prec> ]
[ B<--comment-delimiter> I<commentdelim> ]
[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]

=head1 DESCRIPTION

Perform one of two conic projections geodesics.  Convert geodetic
coordinates to either Lambert conformal conic or Albers equal area
coordinates.  The standard latitudes I<lat1> and I<lat2> are specified
by that the B<-c> option (for Lambert conformal conic) or the B<-a>
option (for Albers equal area).  At least one of these options must be
given (the last one given is used).  Specify I<lat1> = I<lat2>, to
obtain the case with a single standard parallel.  The central meridian
is given by I<lon0>.  The longitude of origin is given by the latitude
of minimum (azimuthal) scale for Lambert conformal conic (Albers equal
area).  The (azimuthal) scale on the standard parallels is I<k1>.

Geodetic coordinates are provided on standard input as a set of lines
containing (blank separated) I<latitude> and I<longitude> (decimal
degrees or degrees, minutes, seconds);  for details on the allowed
formats for latitude and longitude, see the C<GEOGRAPHIC COORDINATES>
section of GeoConvert(1).  For each set of geodetic coordinates, the
corresponding projected easting, I<x>, and northing, I<y>, (meters) are
printed on standard output together with the meridian convergence
I<gamma> (degrees) and (azimuthal) scale I<k>.  For Albers equal area,
the radial scale is 1/I<k>.  The meridian convergence is the bearing of
the I<y> axis measured clockwise from true north.

Special cases of the Lambert conformal projection are the Mercator
projection (the standard latitudes equal and opposite) and the polar
stereographic projection (both standard latitudes correspond to the same
pole).  Special cases of the Albers equal area projection are the
cylindrical equal area projection (the standard latitudes equal and
opposite), the Lambert azimuthal equal area projection (both standard
latitude corresponds to the same pole), and the Lambert equal area conic
projection (one standard parallel is at a pole).

=head1 OPTIONS

=over

=item B<-c> I<lat1> I<lat2>

use the Lambert conformal conic projection with standard parallels
I<lat1> and I<lat2>.

=item B<-a> I<lat1> I<lat2>

use the Albers equal area projection with standard parallels I<lat1> and
I<lat2>.

=item B<-l> I<lon0>

specify the longitude of origin I<lon0> (degrees, default 0).

=item B<-k> I<k1>

specify the (azimuthal) scale I<k1> on the standard parallels (default
1).

=item B<-r>

perform the reverse projection.  I<x> and I<y> are given on standard
input and each line of standard output gives I<latitude>, I<longitude>,
I<gamma>, and I<k>.

=item B<-e> I<a> I<f>

specify the ellipsoid via the equatorial radius, I<a> and
the flattening, I<f>.  Setting I<f> = 0 results in a sphere.  Specify
I<f> E<lt> 0 for a prolate ellipsoid.  A simple fraction, e.g., 1/297,
is allowed for I<f>.  By default, the WGS84 ellipsoid is used, I<a> =
6378137 m, I<f> = 1/298.257223563.

=item B<-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, I<N>, I<S>, I<E>,
I<W>).

=item B<-p> I<prec>

set the output precision to I<prec> (default 6).  I<prec> is the number
of digits after the decimal point for lengths (in meters).  For
latitudes and longitudes (in degrees), the number of digits after the
decimal point is I<prec> + 5.  For the convergence (in degrees) and
scale, the number of digits after the decimal point is I<prec> + 6.

=item B<--comment-delimiter> I<commentdelim>

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

=item B<--version>

print version and exit.

=item B<-h>

print usage and exit.

=item B<--help>

print full documentation and exit.

=item B<--input-file> I<infile>

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

=item B<--input-string> I<instring>

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

=item B<--line-separator> I<linesep>

set the line separator character to I<linesep>.  By default this is a
semicolon.

=item B<--output-file> I<outfile>

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

=back

=head1 EXAMPLES

   echo 39.95N 75.17W | ConicProj -c 40d58 39d56 -l 77d45W
   => 220445 -52372 1.67 1.0
   echo 220445 -52372 | ConicProj -c 40d58 39d56 -l 77d45W -r
   => 39.95 -75.17 1.67 1.0

=head1 ERRORS

An illegal line of input will print an error message to standard output
beginning with C<ERROR:> and causes B<ConicProj> to return an exit
code of 1.  However, an error does not cause B<ConicProj> to
terminate; following lines will be converted.

=head1 AUTHOR

B<ConicProj> was written by Charles Karney.

=head1 HISTORY

B<ConicProj> was added to GeographicLib,
L<https://geographiclib.sourceforge.io>, in version 1.9.
