Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Coordinate Types

Authors
Affiliations
NSF National Center for Atmospheric Research
From Earth, a geostationary satellite looks like it is always in the same place, because it moves in the same direction and at the same rate the Earth spins. Image credit: NASA Solar System Exploration from spaceplace NASA

Coordinate Types


Overview

Great circles can use a diverse variety of different types of coordinates. This notebook will cover the different types of coordinates that are used when calculating great circles and how to convert between them. This notebook will also begin to show how to plot coordinates and their associated great circle arcs on a map of Earth.

  1. Types of Coordinates

  2. Convert Coordinates to All Coordinate Types

  3. Plot Coordinates on a World Map

Prerequisites

ConceptsImportanceNotes
NumpyNecessaryUsed to work with large arrays
PandasNecessaryUsed to read in and organize data (in particular dataframes)
Intro to CartopyHelpfulWill be used for adding maps to plotting
MatplotlibHelpfulWill be used for plotting
  • Time to learn: 20 minutes


Imports

Types of Coordinates

Geodetic Coordinates

Geodetic coordinates are latitude and longtiude and are measured from -90° South to 90° North and -180° East to 180° West measured from Greenwich. Geodetic coordinates also include a geodetic height, which on Earth represents the radius of the planet.

Longitude lines are perpendicular to and latitude lines are parallel to the Equator from Wikipedia

0 degrees latitude represents the middle of Earth at the equator while 0 degrees longitude was arbitrarily chosen to lie in the Royal Observatory in Greenwich (in London, England). This is known as the Prime Meridian and due to its arbitrary definition the location of the Prime Meridian have varied throughout history.

Cartesian Coordinates

Cartesian coordinates describe points in space based on perpendicular axis lines that meet at a single point of origin, where any point’s position is described based on the distance to the origin along xyz axis.

LA three dimensional Cartesian coordinate system, with origin O and axis lines X, Y and Z, oriented as shown by the arrows. The tick marks on the axes are one length unit apart. The black dot shows the point with coordinates x = 2, y = 3, and z = 4, or (2, 3, 4) from Wikipedia

Image Source: Three Dimensional Cartesian Coordinate System

How to Convert from Geodetic to Cartesian Coordinates

Assuming the Earth’s radius is 6378137 meters then:

x=radius∗cos(latitude)∗cos(longitude)x = radius * cos(latitude) * cos(longitude)
y=radius∗cos(latitude)∗sin(longitude)y = radius * cos(latitude) * sin(longitude)
z=radius∗sin(latitude)z = radius * sin(latitude)

However, on a unit sphere, we can consider the radius to be 1.

Spherical Coordinates

Spherical coordinates describe points in space based on three values: radial distance (rho, r) along the radial line between point and the origin, polar angle (theta, θ) between the radial line and the polar axis, and azimuth angle (phi, φ) which is the angle of rotation of the radial line around the polar axis. With a fixed radius, the 3-point coordinates (r, θ, φ) provide a coordinate along a sphere.

  • Radial distance (r): distance from center to surface of sphere

  • Polar angle (θ): angle between radial line and polar axis

  • Azimuth angle (φ): angle around polar axis

Spherical Coordinate Description from Wikipedia

Image Source: Wikipedia - Spherical Coordinate System

Convert from Cartesian to Spherical Coordinates

ρ2=x2+y2+z2ρ^2 = x^2 + y^2 + z^2
tan(θ)=yxtan(θ) = \frac{y}{x}
φ=arccos(xx2+y2+z2)φ = arccos(\frac{x}{\sqrt{x^2 + y^2 + z^2}})

Where, rho (ρ), theta (θ), phi (φ):

ρ=x2+y2+z2ρ = \sqrt{x^2 + y^2 + z^2}
θ=arctan(yx)θ = arctan(\frac{y}{x})
φ=arccos(xρ)φ = arccos(\frac{x}{ρ})

Convert City Coordinates to All Coordinate Types

This notebook contains a list of locations (location_coords.txt) (see here) with their associated latitude and longitude coordinates. We will use the functions defined above to convert latitude/longitude to all coordinate types and save the output to a new file (location_full_coords.txt). In the future, different functions will require different coordinates to complete their calculations, so it is useful to have all these coordinates values known in advance.

Display Coordinates of Cities

First, we will read in the latitude and longitude coordinates from saved text file location.txt and save the details in a pandas dataframe:

Loading...

Add Columns for Additional Coordinate Types

We will now add columns to the dataframe for each of the three additional coordinate types: cartesian and spherical. And finally, we will save the output to a new file we can reference in the future location_full_coords.txt.

Loading...

Plot Coordinates

Coordinates can be hard to visualize internally, so let’s plot them on a world map of Earth. A common plotting tool in Python is matplotlib, but to include a world map we will also use cartopy which stores many different kinds of maps of Earth.

World Map

To generate a full world map, we need the full range of longitude and latitude from -180 degrees to 180 degrees and -90 degrees to 90 degrees.

longitude east = 180

longitude west = -180

latitude north = 90

latitude south = -90
/home/runner/micromamba/envs/cookbook-gc/lib/python3.14/site-packages/cartopy/io/__init__.py:263: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/110m_physical/ne_110m_coastline.zip
  warnings.warn(f'Downloading: {url}', DownloadWarning)
/home/runner/micromamba/envs/cookbook-gc/lib/python3.14/site-packages/cartopy/io/__init__.py:263: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/110m_cultural/ne_110m_admin_0_boundary_lines_land.zip
  warnings.warn(f'Downloading: {url}', DownloadWarning)
/home/runner/micromamba/envs/cookbook-gc/lib/python3.14/site-packages/cartopy/io/__init__.py:263: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/110m_cultural/ne_110m_admin_1_states_provinces_lakes.zip
  warnings.warn(f'Downloading: {url}', DownloadWarning)
<Figure size 1500x1000 with 2 Axes>

United States Map

Sometimes you don’t need to view the whole map, but a sub-section. For example, if we only wanted to view the US on a world map we would need a small range of latitude/longtiude coordinates

longitude east = -60

longitude west = -130

latitude north = 60

latitude south = 20
/home/runner/micromamba/envs/cookbook-gc/lib/python3.14/site-packages/cartopy/io/__init__.py:263: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_cultural/ne_50m_admin_0_boundary_lines_land.zip
  warnings.warn(f'Downloading: {url}', DownloadWarning)
<Figure size 1500x1000 with 2 Axes>

Summary

Coordinates on the Earth are measured in many different systems: Geodetic (latitude/longitude), Cartesian and Spherical. In the next notebooks, these coordinates will be used to create great circle arcs and paths based on vector vector calculations.

In Python, coordinates can be mapped on to a world map via matplotlib and cartopy.

What’s next?

Now that we have coordinates, it’s time to connect them to create great circles!

Up Next: Great Circle arcs and paths

Resources and references