Projection Distortion Manual
This app shows you how points along a small circle project onto the Mercator, Albers Equal Area, Gnomonic, and Geographic projections. For simplicity, the app uses projections based on a sphere. In contrast, most GIS applications project from ellipsoidal models of the earth.
Using the app
You can select a projection from the drop-down list at the top left. Click, hold, and drag the red dot to move the center of the small circle (represented by the green markers) to a new location. You can change the radius of the small circle (in degrees) by moving the green slider. For all projections, the horizontal red line is the equator and the vertical red line is the prime meridian. If you're using a mouse, then letting the mouse hover over a green marker or the center of the small circle gives the longitude and latitude of the marker in degrees. If you're using a touch screen, touch the center or the small circle markers for the same information.
Small and great circles
If a plane intersects a sphere, it creates a circle of intersection (a trace). If the plane passes through the center of the earth, the trace is a great circle. Otherwise, the trace is a small circle. The planes of small circles that are normal to the earth's axis are traces that we call lines of latitude. The only line of latitude that is a great circle is the equator.
Planes of great circles occur at whatever angle the plane passes through the center of the sphere. In the case of the earth, if the axis of the earth lies on then plane, then its trace forms a great circle that we call a line of longitude (meridian)
A computational look at projections
First, take a look at the topic on Map Projections in the Map Projections module. This app uses both forward and inverse map projections. A forward projection takes a (longitude, latitude, radius) triple and returns an (x, y) pair. An inverse projection takes an (x, y) pair and returns a (longitude, latitude) pair, given a known radius. Equations for the more common projections are readily available online, especially at Wolfram's MathWorld site.
Formulas for forward projections are given as pairs, one for deriving x and another for y:
x = f(λ, φ)
y = g(λ, φ)
And formulas for inverse projections are given in the same way, except that they derive x and y from longitude and latitude:
λ = m(x, y)
φ = n(x, y)
Here is how the Mercator functions are fleshed out for forward and inverse projections (for a sphere) look:
Forward
x = R (λ - λ0)
y = R ln (tan (π/4 + φ/2))
Inverse
φ = (π / 2) – (2 arctan (e-Y/R)
λ = X / R + λ0
See the Map Projections topic for a definition of all the terms
Here is one way that the Mercator projection (for a sphere) can be implemented in Python
Search in the file for Projection.prototype.findMercatorSphereX and Projection.prototype.findMercatorSphereY
My app uses Javascript but the math operations look very similar
Latitude and longitude points on small circles—not intuitive!
Take a look at this snapshot of my globe
If the globe is spherical, lines of latitude will be spaced at equal distance along meridians
You can see that I've inscribed (throught the miracle of Photoshop) a circle with a 10º arc radius centered on 60º N, 45º W
To be more specific, the arc is a 10º arc of a meridian of the globe
All meridians are lines of longitude and lie on arcs (sections) of great circles
But looking at the coordinates of points on the circle, you can see that it covers 20º latitude (you probably expected that) but 40º of longitude! What's going on here?
As a geographer you know that lines of longitude converge to a point at the poles
Therefore, the northern part of the circle covers a broader range of longitude than the southern part
So given the coordinates of the center of the circle and its radius in degrees or radians, how can you find the coordinates of any point that lie on the circle?
There's a set of formulas for that!
I used the ones found in Snyder and Bugayevskiy (1995) on p. 225.
If you like, you can see the calculations in action here (look at the code in the drawNodeMarkers() function)
The important thing to realize is that a circle of a fixed angular radius will cover different ranges of longitude when drafted on various parts of a globe
Try selecting a point on the circle (just over over them with a mouse or touch them on touch screen) to see their latitude and longitude values