Coordinate reference systems (CRSs) are a thorn in the side of many geospatial professionals. It's easy to get by when things are working, but if there's a problem it's hard to even know what to search for.
This is a problem-based guide of common CRS issues, root causes, and solutions.
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
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.
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.
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.
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:
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
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:
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:
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.
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:
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.
Here's a glossary: