Dado un par de coordenadas (lon, lat) en grados, obtenemos las coordenadas en Mercator Esférico con:
DEGREES_PER_RADIAN = 180.0 / Math.PI;
MERCATOR_EARTH_RADIUS = 6378137.0;
METERS_PER_EQUATOR_DEGREE = Math.PI * MERCATOR_EARTH_RADIUS / 180.0;
rlat = lat / DEGREES_PER_RADIAN;
y = 0.5 * Math.log((1 + Math.sin(rlat)) / (1 – Math.sin(rlat)));
merx = METERS_PER_EQUATOR_DEGREE * lon;
mery = METERS_PER_EQUATOR_DEGREE * DEGREES_PER_RADIAN * y;
Como es sabido, la proyección esférica de Mercator usada por Google (llamada EPSG:900913 o EPSG:3857) conserva ángulos y proporciones localmente, y todos los paralelos miden lo mismo:
R = 6378137 m
E = 2 * pi * R = 40075016.686 m
Pero sabemos que realmente cada paralelo mide aproximadamente P = E * cos(lat) así que al medir distancias o perímetros directamente en esta proyección, es necesario normalizar el resultado, multiplicándolo por un factor f = cos(lat). En el caso de Estocolmo (Suecia) por ejemplo:
lat = 60
f = 0.5
Esto es una piscina olímpica en Barcelona en Google Maps. Su latitud es 41.36573:
Si medimos su longitud directamente en esa proyección:
Longitud verdadera:
L = 66.57 * cos(41.36573) = 49.96 m
En el caso de áreas, podemos imaginar un polígono arbitrario (por ejemplo el perfil de la cara de un hombre) dividido en infinidad de pequeños cuadritos. Si reducimos la imagen con un factor de 0.6, el área de cada cuadrito resultante será 0.36 veces el del cuadrito original:
Por tanto, si la magnitud unidimensional (longitud) se escala en un factor f, la magnitud bidimensional (área) queda escalada en un factor f^2. Esto quiere decir que un área calculada usando coordenadas de Mercator esférico debe ser normalizada con el factor [cos(lat)]^2.