PROJ(1)
๐ PROJ(1) โ the cartographic projection filter, bestie edition ๐
okay so you found yourself in the PROJ manual (that's the manual name, hi, welcome, we're here) and honestly? you're about to have a great time. this is proj and invproj, and they are out here doing the absolute most with maps.
โจ SYNOPSIS โจ
proj [-beEfiIlmorsStTvVwW] [args]] ([+opt[=arg] ...] | {crs}) file
...
invproj [-beEfiIlmorsStTvVwW] [args]] ([+opt[=arg] ...] | {crs}) file
...
like yes, those flags are a keyboard smash, we'll get through them together ๐ซถ
๐ธ DESCRIPTION ๐ธ
proj and invproj do the forward and inverse conversion of cartographic data to or from cartesian data, with a whole range of selectable projection functions. that's the whole gig. it's giving "one job but does it flawlessly."
heads up bestie:invprojmay not be available on all platforms. if it's not there, just useproj -Iinstead, no cap. ๐
๐ the control parameters (they can appear in any order) ๐
-bโ special option for binary coordinate data input and output through standard input and standard output. data is assumed to be in system typedoublefloating point words. this one's for whenprojis a child process, and it lets you bypass formatting operations entirely. icon behavior.-d <n>โ added in version 5.2.0: specify the number of decimals to round to in the output. precise queen.-iโ selects binary input only (see-b).-Iโ an alternate method to specify inverse projection. redundant when used withinvproj.-oโ selects binary output only (see-b).-t<a>โ where a specifies a character employed as the first character to denote a control line that gets passed through without processing. this option is applicable to ASCII input only. (#is the default value).-e <string>โ where string is an arbitrary string to be output if an error is detected during data transformations. the default value is a three character string:*\t*. note that if the-b,-ior-ooptions are employed, an error is returned asHUGE_VALvalue for both return values.-Eโ causes the input coordinates to be copied to the output line prior to printing the converted values.-l<[=id]>โ list projection identifiers that can be selected with+proj.proj -l=idgives an expanded description of projection id, e.g.proj -l=merc.-lpโ list of all projection id that can be used with the+projparameter. equivalent toproj -l.-lPโ expanded description of all projections that can be used with the+projparameter.-leโ list of all ellipsoids that can be selected with the+ellpsparameters.-luโ list of all distance units that can be selected with the+unitsparameter.-rโ this option reverses the order of the expected input, from longitude-latitude or x-y to latitude-longitude or y-x.-sโ this option reverses the order of the output, from x-y or longitude-latitude to y-x or latitude-longitude.-Sโ causes estimation of meridional and parallel scale factors, area scale factor and angular distortion, and maximum and minimum scale factors to be listed between<>for each input point. for conformal projections, meridional and parallel scale factors will be equal and angular distortion zero. equal area projections will have an area factor of 1. the way this one just knows things about your point ๐ญ-m <mult>โ the cartesian data may be scaled by the mult parameter. when processing data in a forward projection mode the cartesian output values are multiplied by mult, otherwise the input cartesian values are divided by mult before inverse projection. if the first two characters of mult are1/or1:then the reciprocal value of mult is employed.-f <format>โ where format is aprintfformat string to control the form of the output values. for inverse projections, the output will be in degrees when this option is employed. the default format is"%.2f"for forward projection and DMS for inverse.-w<n>โ where n is the number of significant fractional digits to employ for seconds output (when the option is not specified,-w3is assumed).-W<n>โ where n is the number of significant fractional digits to employ for seconds output. when-Wis employed the fields will be constant width with leading zeroes.-vโ causes a listing of cartographic control parameters tested for and used by the program to be printed prior to input data.-Vโ this option causes an expanded annotated listing of the characteristics of the projected point.-vis implied with this option.
๐ฆ the +opt run-line arguments ๐ฆ
the +opt run-line arguments are associated with cartographic parameters. additional projection control parameters may be contained in two auxiliary control files: the first is optionally referenced with the +init=file:id and the second is always processed after the name of the projection has been established from either the run-line or the contents of the +init file. the environment parameter PROJ_DATA establishes the default directory for a file reference without an absolute path. this is also used for supporting files like datum shift files. very "we have layers" of it, honestly.
added in version 9.3.0: {crs} is one of the possibilities accepted by proj_create(), provided it expresses a projected CRS โ like a WKT string, an object code (like "EPSG:32632"), a PROJJSON string, etc. the projection computed will be those of the map projection implied by the transformation from the base geographic CRS of the projected CRS to the projected CRS. that's a lot of words and every one of them matters ๐
๐ files, input and output ๐
one or more files (processed in left to right order) specify the source of data to be converted. a - will specify the location of processing standard input. if no files are specified, the input is assumed to be from stdin.
for ASCII input data the two data values must be in the first two white space separated fields, and when both input and output are ASCII all trailing portions of the input line are appended to the output line.
input geographic data (longitude and latitude) must be in DMS or decimal degrees format, and input cartesian data must be in units consistent with the ellipsoid major axis or sphere radius units. output geographic coordinates will be in DMS (if the -w switch is not employed) and precise to 0.001" with trailing, zero-valued minute-second fields deleted. tidy! โจ
๐ EXAMPLE ๐
okay so this script:
proj +proj=utm +zone=12 -r <<EOF
45d15'33.1" 111.5W
45d15.551666667N -111d30
+45.25919444444 111d30'000w
EOF
will perform UTM zone 12 forward projection. the default +ellps=GRS80 is used because no +ellps was specified. the geographic values of this example are equivalent and are meant as examples of various forms of DMS input. the x-y output data will appear as three lines of:
460770.43 5011865.86
this other example:
proj EPSG:6421 -V <<EOF
-120 35.8
EOF
will perform the projection of the coordinates in "NAD83(2011) / California zone 4" (EPSG:6421) into its geographic system, "NAD83(2011)", showing the expanded annotated listing. the output will appear as:
#Lambert Conformal Conic
# Conic, Sph&Ell
# lat_1= and lat_2= or lat_0, k_0=
# +proj=lcc +lat_0=35.3333333333333 +lon_0=-119 +lat_1=37.25 +lat_2=36
# +x_0=2000000 +y_0=500000 +ellps=GRS80
#Final Earth figure: ellipsoid
# Major axis (a): 6378137.000
# 1/flattening: 298.257222
# squared eccentricity: 0.006694380023
Longitude: 120dW [ -120 ]
Latitude: 35d48'N [ 35.8 ]
Easting (x): 1909606.87
Northing (y): 552253.58
Meridian scale (h) : 1.00004382 ( 0.004382 % error )
Parallel scale (k) : 1.00004382 ( 0.004382 % error )
Areal scale (s): 1.00008765 ( 0.008765 % error )
Angular distortion (w): 0.000
Meridian/Parallel angle: 90.00000
Convergence : -0d35'47.714" [ -0.59658715 ]
Max-min (Tissot axis a-b) scale error: 1.00004 1.00004
look at all that annotated goodness. obsessed. ๐
๐ง OTHER PROGRAMS ๐ง
the proj program is limited to converting between geographic and projected coordinates within one datum. it's a one-datum-at-a-time kind of girl.
the cs2cs program operates similarly, but allows translation between any pair of definable coordinate reference systems, including support for datum translation. so if you need to cross datums, cs2cs is the friend you text.
๐ SEE ALSO ๐
cs2cs(1), cct(1), geod(1), gie(1), projinfo(1), projsync(1)
the whole friend group, iykyk ๐
๐ BUGS ๐
a list of known bugs can be found at:
https://github.com/OSGeo/PROJ/issues
where new bug reports can be submitted to. (yes, this is the "tag yourself in the issue tracker" moment. bugs are not cute but fixing them is main character energy.)
๐ HOME PAGE ๐
go touch grass, digitally. ๐ฑ
๐ซถ AUTHOR ๐ซถ
Gerald I. Evenden
๐ COPYRIGHT ๐
1983-2026, PROJ contributors
and that's the page, bestie!! written with love and also version9.9, dated15 Sep 2026, straight from thePROJ(1)girlies themselves. slay, stay projected, and remember: every detail above is exactly as it was, no cap. ๐โจ๐๐ฆ
๐ฆ where this page comes from
- arch rolling: proj 9.9.0-1 ยท MIT
- nixpkgs unstable: proj 9.9.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms