## Coordinate systems

The LuciadCPillar API modeling of coordinate references provides you with typical geo-referenced coordinate systems.

They are exposed as instances of `CoordinateReference`. Coordinate references are modeled as immutable objects.

The `CoordinateReference` with LuciadCPillar can represent these coordinate reference systems:

• Geodetic coordinate reference systems that represent geographic locations on an ellipsoidal (or a spherical) surface using longitude and latitude coordinates. Geodetic reference systems are based on an ellipsoid that approximates the shape of the earth. A commonly used geodetic reference system is the World Geodetic System 1984 (WGS 1984).

• Projected coordinate reference systems that represent geographic locations on a flat surface using x and y coordinates. A Cartesian reference system is usually based on a geodetic reference system and requires a map projection to represent the curved surface of the earth on a flat surface.

• Geocentric coordinate reference systems that represent a 3D Cartesian coordinate system attached to the center of the earth.

You can use the `CoordinateReferenceProvider` class to create coordinate systems based on EPSG codes or WKT. The supported EPSG codes are available within supported EPSG codes.

## Transformations

Because there are multiple coordinate references, we must be able to transform coordinates from one coordinate reference to another coordinate reference. To create a transformation between a source and a target coordinate reference, you can use `Transformation::create`.