Skip navigation
All Places > Coordinate Reference Systems > Blog > 2017 > October

What does the "2000" mean at the end of the coordinate system names in the Solar System folder?


You can also find reference to the number in the details of the *.prj file itself.




The number suffix is, in fact, a date. It refers to the currently used standard equinox (and epoch) which is J2000.0. 


The prefix "J" indicates that it is a Julian epoch and the number refers to January 1, 2000, 12:00 Terrestrial Time. There have been other standard equinoxes (and epoch) where the previous version was B1950.0, with the prefix "B" indicating it was a Besselian epoch. Julian equinoxes and epochs have been used for every equinox since 1984.


Why do we need to use a fixed date and time?

In a phrase, J2000 is needed due to the precession of the equinoxes.


Forming part of the Milankovitch theory of long term climate change the precession of the equinoxes refers to the observable phenomena of the rotation of the celestial sphere. A cycle which spans a period of (approximately) 25,920 years, over which time the constellations appear to slowly rotate around the earth, taking turns at rising behind the rising sun on the vernal equinox.


Precessional movement of Earth (right). Earth rotates (white arrows) once a day around its rotational axis (red); this axis itself rotates slowly (white circle), completing a rotation in approximately 26,000 years


Watch this video on Precession of the Earth


What are the effects of the Precession of Equinoxes on reference systems?


If the position of the celestial poles and equators are changing on the celestial sphere, then the celestial coordinates of objects, which are defined by the reference of the celestial equator and celestial poles, are also constantly changing and since the location of the equinox changes with time, coordinate systems that are defined by the vernal equinox must have a date associated with them.


This specified year is called the Equinox (not epoch). Currently, we use Equinox J2000.0


The main epochs in common use are:
– B1950.0 - the equinox and mean equator of 1949 Dec 31st 22:09 UT.
– J2000.0 - the equinox and mean equator of 2000 Jan 1st 12:00 UT 


The B1950 and J2000 reference frames are defined by the mean orientation of the Earth’s equator and ecliptic at the beginning of the years 1950 and 2000.

Planetary Coordinate Reference Systems

There is an interesting but perhaps little-used folder of *.prj files called “Solar System”. As someone interested in geodesy and its application it is particularly intriguing how scientists have constructed coordinate reference systems for planetary bodies other than the Earth.


First off let’s have a look at the details found in ArcGIS Desktop for "Geographic Coordinate Systems" of solar system objects. ArcGIS does not have any projected coordinate reference systems for the other planets and moons. Therefore you'll have to make a custom projection if you want to build upon the geographic coordinate system.


However, the folder contains coordinate reference systems for all the major objects found in the Solar System including all the planets, Jupiter's Moons and many others.


Let's start with the Moon

Apart from Earth, the Moon is arguably the astronomical body with the longest applied study of coordinate systems due to its long history of observation compared to other bodies. Interestingly, a standard Lunar Coordinate System was only agreed upon in 2006 for the Lunar Reconnaissance Orbiter mission and in 2008 a Lunar Geodesy and Cartography Working Group was created to maintain the current reference system.


Lunar coordinates, also known as Selenocentric coordinates, act in a similar way to those on Earth using the same nomenclature for geodetic longitude and latitude on Earth. As on Earth, latitude measures the distance north or south of an equator defined to be approximately 90° from the rotation axis, while longitude is measured east and west from an arbitrarily chosen central meridian.


On the Moon, the origin of the coordinate system passes through the point that is most nearly, on average, pointed towards the centre of the Earth. The "on average" part of the definition of the origin is because of precession, the change in the axis of rotation with respect to a reference plane.



From the first image, it can be seen that the Moon is regarded as a perfect sphere (both semimajor and semiminor axis are the same value: 1737400.00 m). 


Before we explore further there are two definitions that are important to know when working with planetary bodies:

Planetocentric coordinates (for the Moon selenocentric) -  are expressed as coordinates with the origin at the center of mass of the body. The coordinates refer to the equatorial plane of the body concerned and are commonly used within calculations of celestial mechanics.


Planetographic coordinates (for the Moon selenographic) - are used for observations of the surface features of those planets whose figures are not truly spherical, but oblate. They are referred to the mean surface of the planet, and are the coordinates actually determined by observation.


The Moon uses selenocentric coordinates where Latitude is the angle between a line extending from the origin to the planetary equator and a vector to the point of interest. Longitude is the angle between this vector and the plane of the Prime Meridian measured in an eastern direction. Radius is the distance from the Moon’s center of mass to the point of interest. The radius of the Moon is defined as 1,737.4 km


Lunar Fixed Reference System

However, there are really two reference systems for the Moon and it has to do with the two definitions above. However, ArcGIS Desktop 10.3 only shows a selenocentric coordinate system. The principal difference between the following reference systems is how the Moon's axes are treated.


Mean Earth - Polar System a selenocentric system

The Mean Earth/Polar Axis reference system defines the z-axis as the mean rotational pole. The Prime Meridian (0˚ Longitude) is defined by the "mean Earth direction" (the point on the lunar surface designated as the origin, this happens to be close to the Oppolzer A crater, below). This system is used in operations for planning, observational targeting, geographic identification of lunar landforms, and inter-mission communications. 



Principal Axis System a selenographic system

This system can be thought of as a body-fixed rotating coordinate system. The Moon principal axes are used but due to the Moon's rotating characteristics, tidally locked to the Earth, this system and the Mean Earth/Polar Axis System do not align. However, they can be aligned through a transformation method bringing the error down to approximately 1Km.  The Principal Axis System is used for studies including gravity field survey and lunar laser ranging.


Key information and positioning of the Moon can be explored further using HORIZONS by JPL.


Selenocentric details as found in ArcGIS


Lunar Reconnaissance Orbiter

Explore the mapping created by the Lunar Reconnaissance Orbiter Camera on the LROC WMS Image Map

And here's a great image I could not resist posting which was taken by the Lunar Reconnaissance Orbiter Camera of the Solar Eclipse on 21st August 2017.


Vincenty's Formulae are two methods named after Thaddeus Vincenty a Polish-American geodesist who lived during the 20th Century. During his career, he devised his formulae as well as contributing to major projects such as the NAD 83 where he introduced three-dimensional Earth-centered coordinates. Vincenty's formulae were published in 1975 and it can be downloaded and read here.


The formulae were developed for calculating geodesic distances between a pair of latitude/longitude points on an ellipsoidal model of the Earth (an oblate sphere). This ellipsoidal geometry is the next step, and perhaps, more appropriate geometry to use when modeling the Earth from working with a sphere using the Haversine Formula see Distance on a sphere: The Haversine Formula. Unlike the Haversine method for calculating distance on a sphere, these formulae are an iterative method and assume the Earth is an ellipsoid.


Sphere outline is dotted line. Solid outline ellipsoid (oblate sphere)


However, even though Vincenty's formulae are quoted as being accurate to within 0.5 mm distance or 0.000015″ of bearing; the Haversine formulas are accurate to approximately 0.3%, which maybe be good enough for your project. Further consideration should be given to the datum being used, for example, WGS-84 is defined to be accurate to ±1m, perhaps negating the 0.5mm distance accuracy quoted for these formulae!


Understanding underlying assumptions is important for accuracy.


The formulae published by Thaddeus Vincenty include a direct and an inverse method where:

  1. The Direct Method computes the location of a point that is a given distance and azimuth from another point
  2. The Inverse Method computes the geographical distance and azimuth between two given points. 


As mentioned above the formulae are iterative processes meaning that a sequence of equations is calculated where the output is reentered into the same sequence of equations. The aim is to minimise the output value after a set number of iterations.


For example, the Inverse Method outputs λ after assigning several constants including the length of the semi-major axis, length of the semi-minor axis, flattening, latitude coordinates, reduced latitudes, etc. The aim of the method is to minimise the value of the output λ (i.e. when the results converge to a desired degree of accuracy):


When the difference between the current value of λ and the value of λ from the previous iteration is less than the convergence tolerance then the final stage of the Inverse Method can be executed:



It is worth noting that this iterative solution to the inverse problem fails to converge or converges slowly for nearly antipodal points. This issue was discussed and alternative methods proposed in future papers by Vincenty (e.g. Vincenty 1975b).


The code for these formulae is available in Python from the PyGeodesy GitHub project or from Using PyGeodesy, the user can implement the Vincenty methods and change the ellipsoid for example in the below (taken from PyGeodesy GitHub project):


#from pygeodesy.ellipsoidalVincenty import LatLon
Newport_RI = LatLon(41.49008, -71.312796)
Cleveland_OH = LatLon(41.499498, -81.695391)
866455.4329158525 # meter

#Change the ellipsoid model used by the Vincenty formulae as follows:
from pygeodesy import Datums
from pygeodesy.ellipsoidalVincenty import LatLon
p = LatLon(0, 0, datum=Datums.OSGB36)
#or by converting to anothor datum:
p = p.convertDatum(Datums.OSGB36)


I would also recommend having a look at the code samples written by Dan Patterson on his Github Numpy Samples page.

I decided to look into some of the mathematics that makes it possible to calculate distances considering 3D space, for example, calculating distance on a sphere. You can find our more on geodesic distances from the previous blog (Geodesic distances: How long is that line again? ).


The Earth is round but big, so we can consider it flat for short distances. But, even though the circumference of the Earth is about 40,000 kilometers, flat-Earth formulas for calculating the distance between two points start showing noticeable errors when the distance is more than about 20 kilometers. Therefore, calculating distances on a sphere needs to consider spherical geometry, the study of shapes on the surface of a sphere. 


Spherical geometry considers spherical trigonometry which deals with relationships between trigonometric functions to calculate the sides and angles of spherical polygons. These spherical polygons are defined by a number of intersecting great circles on a sphere. Some rules found in spherical geometry include:


  • There are no parallel lines.
  • Straight lines are great circles, so any two lines meet in two points.
  • The angle between two lines is the angle between the planes of the corresponding great circles.


The Haversine

Did you know that there are more than the 3 trigonometric functions we are all familiar with sine, cosine and, tangent? These additional trigonometric functions are now obsolete, however, in the past, they were worth naming. 


The additional trigonometric functions are versine, haversine, coversine, hacoversine, exsecant, and excosecant. All of these can be expressed simply in terms of the more familiar trigonometric functions. For example, haversine(θ) = sin²(θ/2).


The haversine formula is a very accurate way of computing distances between two points on the surface of a sphere using the latitude and longitude of the two points. The haversine formula is a re-formulation of the spherical law of cosines, but the formulation in terms of haversines is more useful for small angles and distances.


One of the primary applications of trigonometry was navigation, and certain commonly used navigational formulas are stated most simply in terms of these archaic function names. But you might ask, why not just simplify everything down to sines and cosines? The functions listed above were from a time without calculators, or efficient computer processors, when the user calculated angles and direction by hand using log tables, every named function took appreciable effort to evaluate. The point of these functions is if a table simply combines two common operations into one function, it probably made navigational calculations on a rocking ship more efficient.


These function names have a simple naming pattern and in this example, the "Ha" in "Haversine" stands for "half versed sine" where haversin(θ) = versin(θ)/2.



Haversine Formula 

The Haversine formula is perhaps the first equation to consider when understanding how to calculate distances on a sphere. The word "Haversine" comes from the function:

haversine(θ) = sin²(θ/2)


The following equation where φ is latitude, λ is longitude, R is earth’s radius (mean radius = 6,371km) is how we translate the above formula to include latitude and longitude coordinates. Note that angles need to be in radians to pass to trig functions:

a = sin²(φB - φA/2) + cos φA * cos φB * sin²(λB - λA/2)
c = 2 * atan2( √a, √(1−a) )
d = R ⋅ c


We can write this formula into a Python script where the input parameters are a pair of coordinates as two lists:


Calculate distance using the Haversine Formula

def haversine(coord1: object, coord2: object):
    import math

    # Coordinates in decimal degrees (e.g. 2.89078, 12.79797)
    lon1, lat1 = coord1
    lon2, lat2 = coord2

    R = 6371000  # radius of Earth in meters
    phi_1 = math.radians(lat1)
    phi_2 = math.radians(lat2)

    delta_phi = math.radians(lat2 - lat1)
    delta_lambda = math.radians(lon2 - lon1)

    a = math.sin(delta_phi / 2.0) ** 2 + math.cos(phi_1) * math.cos(phi_2) * math.sin(delta_lambda / 2.0) ** 2
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))

    meters = R *# output distance in meters
    km = meters / 1000.0  # output distance in kilometers

    meters = round(meters, 3)
    km = round(km, 3)

    print(f"Distance: {meters} m")
    print(f"Distance: {km} km")


The result will print as below:

haversine([-0.116773, 51.510357], [-77.009003, 38.889931])

Distance: 5897658.289 m
Distance: 5897.658 km