# PROJ Quickstart¶

PROJ is a standard Unix filter function which converts geographic longitude and latitude coordinates into cartesian coordinates (and vice versa), and it is a C API for software developers to include coordinate transformation in their own software.

## PROJ¶

Note

**What will I learn ?** In this section, you will learn how to use the PROJ tool.

### What is PROJ ?¶

PROJ and invproj perform respective forward and inverse transformation of cartographic data to or from cartesian data with a wide range of selectable projection functions.

### proj Synopsis¶

```
proj [ -bcCeEfiIlmorsStTvVwW [ args ] ] [ +args ] file[s]
invproj [ -bcCeEfiIlmorsStTwW [ args ] ] [ +args ] file[s]
```

These commands are fully describe in PROJ documentation for the latest version.

### PROJ Example¶

The following script

```
proj +proj=utm +lon_0=112w +ellps=clrk66
-r <<EOF
45d15'33.1" 111.5W
45d15.551666667N -111d30
+45.25919444444 111d30'000w
EOF
```

will perform UTM forward projection with a stan- dard UTM central meridian nearest longitude 112W. 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:

```
460769.27 5011648.45
```

## cs2cs¶

Note

**What will I learn ?** In this section, you will learn how to use the cs2cs tool.

### What is cs2cs ?¶

`cs2cs`

performs transformation between the source and destination cartographic coordinate system
on a set of input points. The coordinate system transformation can include translation between
projected and geographic coordinates as well as the application of datum shifts.

### cs2cs Synopsis¶

```
cs2cs [ -eEfIlrstvwW [ args ] ] [ +opts[=arg] ] [ +to [+opts[=arg]] ] file[s]
```

These commands are fully describe in cs2cs documentation for the latest version.

### cs2cs Example¶

The following script

```
cs2cs +proj=latlong +datum=NAD83
+to +proj=utm +zone=10 +datum=NAD27
-r <<EOF
45d15'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.99 5076292.42 0.000
```

## geod¶

Note

**What will I learn ?** In this section, you will learn how to use the geod tool.

### What is geod ?¶

`geod`

(direct) and `invgeod`

(inverse) perform geodesic (“Great
Circle”) computations for determining latitude, longitude and
back azimuth of a terminus point given a initial point latitude,
longitude, azimuth and distance (direct) or the forward
and back azimuths and distance between an initial and terminus
point latitudes and longitudes (inverse). The results are
accurate to round off for |f| < 1/50, where f is flattening.

`invgeod`

may not be available on all platforms; in this case
call geod with the -I option.

### geod Synopsis¶

```
geod +ellps=<ellipse> [ -afFIlptwW [ args ] ] [ +args ] file[s]
invgeod +ellps=<ellipse> [ -afFIlptwW [ args ] ] [ +args ] file[s]
```

These commands are fully describe in PROJ documentation for the latest version.

### geod Example¶

The following script determines the geodesic azimuths and distance in U.S. statute miles from Boston, MA, to Portland, OR:

```
geod +ellps=clrk66 <<EOF -I +units=us-mi
42d15'N 71d07'W 45d31'N 123d41'W
EOF
```

which gives the results:

```
-66d31'50.141" 75d39'13.083" 2587.504
```

where the first two values are the azimuth from Boston to Portland, the back azimuth from Portland to Boston followed by the distance.

An example of forward geodesic use is to use the Boston loca- tion and determine Portland’s location by azimuth and distance:

```
geod +ellps=clrk66 <<EOF +units=us-mi
42d15'N 71d07'W -66d31'50.141" 2587.504
EOF
```

which gives:

```
45d31'0.003"N 123d40'59.985"W 75d39'13.094"
```

Note

Lack of precision in the distance value compromises the precision of the Portland location.