CS2CS(1) PROJ CS2CS(1)
NAME
cs2cs - Cartographic coordinate system filter
SYNOPSIS
cs2cs [
-eEfIlrstvwW [args]]
[[--area <name_or_code>] | [--bbox <west_long,south_lat,east_long,north_lat>]]
[--authority <name>] [--3d]
[--accuracy <accuracy>] [--only-best[=yes|=no]] [--no-ballpark]
[--s_epoch {epoch}] [--t_epoch {epoch}]
([
+opt[=arg] ...] [+to
+opt[=arg] ...] | {source_crs} {target_crs})
file ...
where {source_crs} or {target_crs} is one of the possibilities
accepted by
proj_create(), provided it expresses a CRS
+o a proj-string,
+o a WKT string,
+o an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
"urn:ogc:def:coordinateOperation:EPSG::1671"),
+o an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that
case as uniqueness is not guaranteed, heuristics are applied to
determine the appropriate best match.
+o a CRS name and a coordinate epoch, separated with '@'. For
example "
ITRF2014@2025.0". (
added in 9.2)
+o a OGC URN combining references for compound coordinate reference
systems (e.g "
urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717" or
custom abbreviated syntax "EPSG:2393+5717"),
+o a OGC URN combining references for references for projected or
derived CRSs e.g. for Projected 3D CRS "UTM zone 31N / WGS 84
(3D)":
"
urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031"
(
added in 6.2)
+o a OGC URN combining references for concatenated operations (e.g.
"
urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618")
+o a PROJJSON string. The jsonschema is at
https://proj.org/schemas/v0.4/projjson.schema.json (
added in 6.2)
+o a compound CRS made from two object names separated with " + ".
e.g. "WGS 84 + EGM96 height" (
added in 7.1)
New in version 6.0.0.
NOTE: before 7.0.1, it was needed to add +to between {source_crs} and
{target_crs} when adding a filename
DESCRIPTION
cs2cs performs transformation between the source and destination
cartographic coordinate reference system on a set of input points.
The coordinate reference system transformation can include
translation between projected and geographic coordinates as well as
the application of datum shifts.
The following control parameters can appear in any order:
-I Method to specify inverse translation, convert from
+to coordinate system to the primary coordinate system defined.
-t<a> Where
a specifies a character employed as the first character
to denote a control line to be passed through without
processing. This option applicable to ASCII input only. (# is
the default value).
-d <n> New in version 5.2.0.
Specify the number of decimals to round to in the output.
-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*.
-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.
cs2cs -l=id gives expanded description of projection
id, e.g.
cs2cs -l=merc.
-lp List of all projection id that can be used with the
+proj parameter. Equivalent to
cs2cs -l.
-lP Expanded description of all projections that can be used with
the
+proj parameter.
-le List of all ellipsoids that can be selected with the
+ellps parameters.
-lm List of hard-coded prime meridians that can be selected with
the
+pm parameter. Note that this list is no longer updated,
and some values may conflict with other sources.
-lu List of all distance units that can be selected with the
+units parameter.
-r This options reverses the order of the first two expected
inputs from that specified by the CRS to the opposite order.
The third coordinate, typically height, remains third.
-s This options reverses the order of the first two expected
outputs from that specified by the CRS to the opposite order.
The third coordinate, typically height, remains third.
-f <format> Where
format is a printf format string to control the form of
the output values. For inverse projections, the output will
be in degrees when this option is employed. If a format is
specified for inverse projection the output data will be in
decimal degrees. 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,
-w3 is assumed).
-W<n> Where
n is the number of significant fractional digits to
employ for seconds output. When
-W is employed the fields will
be constant width with leading zeroes. Valid range: -W0
through -W8.
-v Causes a listing of cartographic control parameters tested for
and used by the program to be printed prior to input data.
--area <name_or_code> New in version 8.0.0.
Specify an area of interest to restrict the results when
researching coordinate operations between 2 CRS. The area of
interest can be specified either as a name (e.g "Denmark -
onshore") or a AUTHORITY:CODE (EPSG:3237)
This option is mutually exclusive with
--bbox.
--bbox <west_long,south_lat,east_long,north_lat> New in version 8.0.0.
Specify an area of interest to restrict the results when
researching coordinate operations between 2 CRS. The area of
interest is specified as a bounding box with geographic
coordinates, expressed in degrees in a unspecified geographic
CRS.
west_long and
east_long should be in the [-180,180]
range, and
south_lat and
north_lat in the [-90,90].
west_long is generally lower than
east_long, except in the case where
the area of interest crosses the antimeridian.
--only-best[=yes|=no] New in version 9.2.0.
Force
cs2cs to only use the best transformation known by PROJ.
cs2cs will return an error if a grid needed for the best
transformation is missing.
Best transformation should be understood as the most accurate
transformation available among all relevant for the point to
transform, and if all known grids required to perform such
transformation were accessible (either locally or through
network).
Note that the default value for this option can be also set
with the
PROJ_ONLY_BEST_DEFAULT environment variable, or with
the
only_best_default setting of
proj.ini (
--only-best when
specified overrides such default value).
--no-ballpark New in version 8.0.0.
Disallow any coordinate operation that is, or contains, a
Ballpark transformation --accuracy <accuracy> New in version 8.0.0.
Sets the minimum desired accuracy for candidate coordinate
operations.
--authority <name> New in version 8.0.0.
This option can be used to restrict the authority of
coordinate operations looked up in the database. When not
specified, coordinate operations from any authority will be
searched, with the restrictions set in the
authority_to_authority_preference database table related to
the authority of the source/target CRS themselves. If
authority is set to
any, then coordinate operations from any
authority will be searched If authority is a non-empty string
different of
any, then coordinate operations will be searched
only in that authority namespace (e.g
EPSG).
This option is mutually exclusive with
--bbox.
--3d New in version 9.1.
"Promote" 2D CRS(s) to their 3D version, where the vertical
axis is the ellipsoidal height in metres, using the ellipsoid
of the base geodetic CRS. Depending on PROJ versions and the
exact nature of the CRS involved, especially before PROJ 9.1,
a mix of 2D and 3D CRS could lead to 2D or 3D transformations.
Starting with PROJ 9.1, both CRS need to be 3D for vertical
transformation to possibly happen.
--s_epoch New in version 9.4.
Epoch of coordinates in the source CRS, as decimal year. Only
applies to a dynamic CRS.
--t_epoch New in version 9.4.
Epoch of coordinates in the target CRS, as decimal year. Only
applies to a dynamic CRS.
The
+opt run-line arguments are associated with cartographic
parameters.
The
cs2cs program requires two coordinate reference system (CRS)
definitions. The first (or primary is defined based on all projection
parameters not appearing after the
+to argument. All projection
parameters appearing after the
+to argument are considered the
definition of the second CRS. If there is no second CRS defined, a
geographic CRS based on the datum and ellipsoid of the source CRS is
assumed. Note that the source and destination CRS can both of same or
different nature (geographic, projected, compound CRS), or one of
each and may have the same or different datums.
When using a WKT definition or a AUTHORITY:CODE, the axis order of
the CRS will be enforced. So for example if using EPSG:4326, the
first value expected (or returned) will be a latitude.
Internally,
cs2cs uses the
proj_create_crs_to_crs() function to
compute the appropriate coordinate operation, so implementation
details of this function directly impact the results returned by the
program.
The environment parameter
PROJ_DATA establishes the directory for
resource files (database, datum shift grids, etc.)
One or more files (processed in left to right order) specify the
source of data to be transformed. A
- will specify the location of
processing standard input. If no files are specified, the input is
assumed to be from stdin. For 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 normally be in DMS format (use
-f %.12f for decimal degrees with 12 decimal places), while projected
(cartesian) coordinates will be in linear (meter, feet) units.
Use of remote grids
New in version 7.0.0.
If the
PROJ_NETWORK environment variable is set to
ON,
cs2cs will
attempt to use remote grids stored on CDN (Content Delivery Network)
storage, when they are not available locally.
More details are available in the
Network capabilities section.
EXAMPLES
Using PROJ strings
The following script
cs2cs +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27 -r <<EOF
45<degree>15'33.1" 111.5W
45d15.551666667N -111d30
+45.25919444444 111d30'000w
EOF
will transform the input NAD83 geographic coordinates into NAD27
coordinates in the UTM projection with zone 10 selected. The
geographic values of this example are equivalent and meant as
examples of various forms of DMS input. The x-y output data will
appear as three lines of:
1402285.93 5076292.58 0.00
To get those exact values, you have need to have all current grids
installed (in that instance the NADCON5
us_noaa_nadcon5_nad27_nad83_1986_conus.tif grid) locally or use
networking capabilities mentioned above.
To make sure you will get the optimal result, you may add
--only-best. Assuming the above mentioned grid is
not available,
echo -111.5 45.25919444444 | cs2cs --only-best +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27
would return:
Attempt to use coordinate operation axis order change (2D) + Inverse of NAD27 to NAD83 (7) + axis order change (2D) + UTM zone 10N failed. Grid us_noaa_nadcon5_nad27_nad83_1986_conus.tif is not available. Consult https://proj.org/resource_files.html for guidance.
* * inf
Otherwise, if you don't have the grid available and you don't specify
--only-best:
echo -111.5 45.25919444444 | cs2cs --only-best +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27
would return:
1402224.57 5076275.42 0.00
which is the result when the NAD27 and NAD83 datums are dealt as
identical, which is an approximation at a level of several tens of
metres.
Using EPSG CRS codes
Transforming from WGS 84 latitude/longitude (in that order) to UTM
Zone 31N/WGS 84
cs2cs EPSG:4326 EPSG:32631 <<EOF
45N 2E
EOF
outputs
421184.70 4983436.77 0.00
Using EPSG CRS names
Transforming from WGS 84 latitude/longitude (in that order) with
EGM96 height to UTM Zone 31N/WGS 84 with WGS84 ellipsoidal height
echo 45 2 0 | cs2cs "WGS 84 + EGM96 height" "WGS 84 / UTM zone 31N" --3d
outputs
421184.70 4983436.77 50.69
NOTE: To get those exact values, you have need to have the EGM96 grid
installed locally or use networking capabilities mentioned above.
SEE ALSO
proj(1),
cct(1),
geod(1),
gie(1),
projinfo(1),
projsync(1)BUGS
A list of known bugs can be found at
https://github.com/OSGeo/PROJ/issues where new bug reports can be
submitted to.
HOME PAGE
https://proj.org/AUTHOR
Frank Warmerdam
COPYRIGHT
1983-2024, PROJ contributors
9.5 01 Dec 2024 CS2CS(1)