# Coordinate reference systems¶

Coordinate reference systems describe how the numerical coordinates of a geometry or grid relate to space in the real world. Difference coordinate systems take different approaches to reducing position on the curved surface of the earth to two-dimensional coordinates, making different assumptions about Earth’s geometry and choosing to preserve different invariants.

In *Karta*, coordinate systems objects handle both projection from geographical
coordinates and geodetic operations such as calculating distances and azimuths.
Basic coordinate systems (*Cartesian* and *SphericalEarth*) are provided, while
more specialized systems employ pyproj to handle calculations.

The following predefined coordinate systems instances are available:

SphericalEarthLonLatWGS84LonLatNAD27LonLatNAD83UPSNorthUPSSouthNSIDCNorthNSIDCSouthLambertEqualAreaGallPetersEqualAreaWebMercator

Additionally, the *Cartesian* class can be used without instantiation.

To use a pre-defined coordinate system,

```
from karta.crs import LonLatWGS84
```

The object `LonLatWGS84`

can be passed to *Geometry* and *Grid* instances in
*Karta*. To define their coordinate system.

To create a specialized coordinate system, provide a *proj.4* string and a
spheroid definition.

```
from karta.crs import ProjectedCRS
my_crs = ProjectedCRS("+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 "
"+lon_0=-126 +x_0=1000000 +y_0=0 "
"+ellps=GRS80 +datum=NAD83 +units=m +no_defs")
```

See the proj.4 documentation for more details.