logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

GeodesicProj -- perform projections based on geodesics

Author

GeodesicProj was written by Charles Karney.

Description

       Perform projections based on geodesics.  Convert geodetic coordinates to either azimuthal equidistant,
       Cassini-Soldner, or gnomonic coordinates.  The center of the projection (lat0, lon0) is specified by
       either the -c option (for Cassini-Soldner), the -z option (for azimuthal equidistant), or the -g option
       (for gnomonic).  At least one of these options must be given (the last one given is used).

       Geodetic coordinates are provided on standard input as a set of lines containing (blank separated)
       latitude and longitude (decimal degrees or degrees, minutes, seconds); for details on the allowed formats
       for latitude and longitude, see the "GEOGRAPHIC COORDINATES" section of GeoConvert(1).  For each set of
       geodetic coordinates, the corresponding projected coordinates x, y (meters) are printed on standard
       output together with the azimuth azi (degrees) and reciprocal scale rk.  For Cassini-Soldner, azi is the
       bearing of the easting direction and the scale in the easting direction is 1 and the scale in the
       northing direction is 1/rk.  For azimuthal equidistant and gnomonic, azi is the bearing of the radial
       direction and the scale in the azimuthal direction is 1/rk.  For azimuthal equidistant and gnomonic, the
       scales in the radial direction are 1 and 1/rk^2, respectively.

Errors

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

Examples

          echo 48.648 -2.007 | GeodesicProj -c 48.836 2.337
          => -319919 -11791 86.7 0.999
          echo -319919 -11791 | GeodesicProj -c 48.836 2.337 -r
          => 48.648 -2.007 86.7 0.999

History

GeodesicProj  was  added  to GeographicLib, <https://geographiclib.sourceforge.io>, in 2009-08.  Prior to
       version 1.9 it was called EquidistantTest.

GeographicLib 2.5                                  2024-12-28                                    GEODESICPROJ(1)

Name

       GeodesicProj -- perform projections based on geodesics

Options

-zlat0lon0
           use  the azimuthal equidistant projection centered at latitude = lat0, longitude = lon0.  The -w flag
           can be used to swap the default order of the 2 coordinates, provided that it appears before -z.

       -clat0lon0
           use the Cassini-Soldner projection centered at latitude = lat0, longitude = lon0.  The -w flag can be
           used to swap the default order of the 2 coordinates, provided that it appears before -c.

       -glat0lon0
           use the ellipsoidal gnomonic projection centered at latitude = lat0, longitude = lon0.  The  -w  flag
           can be used to swap the default order of the 2 coordinates, provided that it appears before -g.

       -r  perform the reverse projection.  x and y are given on standard input and each line of standard output
           gives latitude, longitude, azi, and rk.

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

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

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

       --comment-delimitercommentdelim
           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-fileinfile
           read  input  from  the  file  infile  instead  of  from standard input; a file name of "-" stands for
           standard input.

       --input-stringinstring
           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-separatorlinesep
           set the line separator character to linesep.  By default this is a semicolon.

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

See Also

       The ellipsoidal gnomonic projection is derived in Section 8 of C. F. F. Karney, Algorithmsforgeodesics,
       J.   Geodesy   87,    43-55    (2013);    DOI    <https://doi.org/10.1007/s00190-012-0578-z>;    addenda:
       <https://geographiclib.sourceforge.io/geod-addenda.html>.

Synopsis

GeodesicProj ( -z | -c | -g ) lat0lon0 [ -r ] [ -eaf ] [ -w ] [ -pprec ] [ --comment-delimitercommentdelim ] [ --version | -h | --help ] [ --input-fileinfile | --input-stringinstring ] [
       --line-separatorlinesep ] [ --output-fileoutfile ]

See Also