I hate coordinate systems! How do I wrap my head around these things?

Apply this three-part mental model of geospatial datasets. Many common problems happen when one of these parts is missing or out of sync.

Attributes: the meanings or labels of a data point.

Coordinates: numbers describing the data point's position in space.

Coordinate (reference) system: metadata describing the space itself: origin, axes, units, etc.

For example:

Attributes: "The White House" or "1600 Pennsylvania Avenue"

Coordinates: (-77.0367, 38.8976)

Coordinate (reference) system: WGS84 longitude,latitude

I hate coordinate systems! My dataset is off the coast of Africa!

Your dataset probably has some junk coordinates. Many data formats store "null" as zeroes. If your software is assuming a longitude/latitude geographic coordinate system (GCS), then the point with coordinates (0, 0) is where the equator crosses the prime meridian off the coast of Africa (humorously known as Null Island). This can sometimes happen when importing from Excel and empty rows are not trimmed off.

Solution: Remove the data points from your dataset whose coordinates are null.

I hate coordinate systems! My dataset looks like it's bigger than the Earth!

Your dataset probably has its coordinate system wrongly defined as a longitude/latitude geographic coordinate system (GCS). This can happen if the coordinate system is missing altogether, in which case GIS software often assumes a GCS without telling you. A GCS only ranges from -180° west to +180° east in the X-axis and -90° south to +90 north in the Y-axis. If the coordinates in your dataset are out of this range then your dataset will look like it's off of the Earth.

Solution: Redefine the coordinate system, i.e. change the coordinate system but not the coordinates, from the GCS to the correct coordinate system.

I hate coordinate systems! My dataset is not located where it should be!

Your dataset probably has the wrong coordinate system. This is the more general case of the previous problem. This can happen if the coordinate system is missing altogether, in which case GIS software often assumes that it is the same coordinate system as a previously loaded dataset, or the coordinate system set in the "project" or "map document".

Solution: Redefine the coordinate system, i.e. change the coordinate system but not the coordinates, to the correct coordinate system.

I hate coordinate systems! What coordinate system should my dataset be in?

Look at the two things you do know: the attributes and the coordinates. A data point's attributes gives context to where on the Earth it is located. Most GIS software will display the minimum and maximum coordinates in the layer's properties as "extent" or "bounding box". From these, do some detective work on the coordinate system which you should use when redefining your dataset.

Solutions:

I hate coordinate systems! My dataset is slightly offset from where it should be!

Your dataset probably has the wrong longitude/latitude geographic coordinate system (GCS). Different GCSs define slightly different sizes/shapes of the Earth (their ellipsoids) and different positionings on the Earth (their datums). As a result, the same longitude/latitude coordinates in two different GCSs can appear offset, although typically within tens of meters of each other. This can happen even if you are using a projected coordinate system (PCS) whose units are not degrees of longitude/latitude since PCSs have a GCS embedded within them.

Solution: Redefine the coordinate system, i.e. change the coordinate system but not the coordinates, to one of the following

I hate coordinate systems! How do I redefine a dataset's coordinate system?

It depends on your software. Remember, redefining means the metadata about the coordinate system is modified but the coordinates are not. This contrasts with reprojections and transformations, which modify both the coordinate system and the coordinates.

Solutions:

I hate coordinate systems! My measurements are bigger or smaller than they should be!

Your dataset is probably in a non-equidistant coordinate system. Most GIS software stupidly calculates distances, areas, and volumes using Euclidean math in the dataset's or data frame's coordinate system, regardless of whether it is equidistant. Depending on the amount of distortion associated with the projection, this can lead to (wildly) incorrect measurements without you realizing. In the common case of the Mercator projection, distances are enlarged by about 1/cos(latitude).

Solutions:

I hate coordinate systems! Why is Mercator ever used if it's so distorted?

Mercator is the only conformal cylindrical map projection. Cylindrical map projections mean the whole Earth fits into a rectangle, which is very convenient for data processing algorithms that are used to working with rectangular images. Conformal means that angles and shapes are always preserved: north is always up, squares are always square, etc. Using a non-conformal projection would make things look stretched, squashed, and/or rotated when zooming in.

Mercator (cylindrical) Lambert Cylindrical Albers Conic
✅ Shape ❌ Shape ✅ Shape
✅ Rotation ✅ Rotation ❌ Rotation
❌ Area ✅ Area ✅ Area

Mercator does enlarge areas farther from the equator, but at least this distortion is the same horizontally and vertically. And it's trivial to calculate a scale factor to correct measurements. The only time the distortion is problematic is when viewing a global-scale map with a range of different scale factors, but most maps are not global-scale and there are plenty of better projections to use for this case.

I hate coordinate systems! Why don't we always use longitude/latitude?

Good question. There are a bunch of reasons we use planar projected coordinate systems rather than just sticking with latitude,longitude geographic coordinate systems all the time:

I hate coordinate systems! My X- and Y-values are OK, but my Z-values (heights, elevations) are off!

Your dataset is probably measuring height above the ellipsoid instead of above sea level (geoid), or vice-versa. Sea level follows the geoid, a surface which is lumpy because of minute regional variations in gravity. GNSS like GPS do not measure the height above the geoid but rather the idealized mathematical representation called the ellipsoid. Some GPS devices automatically convert ellipsoidal height to height above sea level (aka orthometric height aka geoidal height), but many do not.

Solution: Use cs2cs in PROJ, or alternatively an older tool like VDatum, to convert between ellipsoidal and orthometric (above sea level) heights. For a reasonably small dataset, a constant offset can be applied to all Z-coordinates.

I hate coordinate systems! What do all these terms mean?

Here's a glossary: