No questions, just wanted to say that this is magnificent work. The "X miles to Baghdad" is an especially nice touch.
Edit:
Because this is a programming site, after all — let's share Mike's projection:
// φ is the central meridian (e.g., 45° for UTM Zone 38)
// θ is the screen rotation
function rotatedTransverseMercator(φ, θ) {
var π = Math.PI,
cosθ = Math.cos(θ = -(90 + θ) / 180 * π),
sinθ = Math.sin(θ);
function raw(λ, φ) {
var x = λ,
y = Math.log(Math.tan(π / 4 + φ / 2));
return [
x * cosθ - y * sinθ,
x * sinθ + y * cosθ
];
}
raw.invert = function(x, y) {
return [
x * cosθ + y * sinθ,
2 * Math.atan(Math.exp(y * cosθ - x * sinθ)) - π / 2
];
};
var rotate = [-φ, 0, 90],
rotation = d3.geo.rotation(rotate),
projection = d3.geo.projection(raw).rotate(rotate),
center = projection.center;
projection.center = function(_) {
return _
? center(rotation(_))
: ((_ = center()), rotation.invert(_));
};
delete projection.rotate;
return projection;
}Programming can involve math, math can involve programming, but neither is defined by the other.
Even string processing is math (c.f. Godel).
The problem with programming interviews is they test math tricks, arcane knowledge, trivia and puzzles.
Far more important than mathematical knowledge, is mathematical capability.
Sign up for an account here, then go nuts: http://earthexplorer.usgs.gov/
More detail on the images: http://landsat.usgs.gov/landsat8.php
The Euphrates River map here, for example, is stitched together from about 15 gigs worth of raw Landsat tiles. Photoshop beware!