Why Are All Maps Inaccurate?. Understanding map projections, and why… | by Jake Teo | Dec, 2023

Editor
2 Min Read


Understanding map projections, and why they are used in some of the most popular maps today

Photo by Kyle Glenn on Unsplash

Most of us know the Earth is spherical, or more accurately an ellipsoid. The fact that we have to represent a curved 3-dimensional surface to a 2-dimensional flat piece of paper or screen means that some distortions are involved. This method of “projecting” the Earth’s surface to a 2D image is called a map projection.

There are hundreds of map projections, and each of them minimises distortion in the shape, distance, area and direction in various degrees. However, no map projection can eliminate them all, hence understanding the pros and cons of each projection is essential to determine what to use for your project.

Orthographic Projection
Mercator Projection
Transverse Mercator Projection
Lambert Conformal Conic Projection
Robinson Projection
Summary

To visualise the various projections, we can use the Python libraries matplotlib and cartopy.

pip install matplotlib cartopy

The code source for most of the world maps created in this article is provided below.

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as feature

# fix maplotlib params
plt.rcParams[‘figure.dpi’] = 175

# projections & borders
CRSs = [ccrs.Orthographic(),
ccrs.Orthographic(central_longitude=0, central_latitude=-90),
ccrs.Mercator(),
ccrs.UTM(zone=29),
ccrs.Robinson(),
ccrs.LambertConformal()]

borders = [(0, 1, 1, 0.05),
(0, 1, 1, 0.05),
(0, 1, 1, 0.05),
(0, 1, 1, 0.05),
(0.05, 1, 1, 0),
(0, 1, 1, 0)]

names = ["ortho", "ortho_southpole", "merca",
"utm", "robin", "lambertc"]

dir = "/Users/jake/Desktop/gis"

for crs, br, name in zip(CRSs, borders, names):
fig, ax = plt.subplots(subplot_kw=‘projection’: crs)
projection_name = str(crs).split(" ")[0]

# Draw countries and coastlines
ax.coastlines(linewidth=0.5)…

Share this Article
Please enter CoinGecko Free Api Key to get this plugin works.