Solución:
Como primer paso, podría observar las distorsiones de la proyección de Mercator, que es una proyección conforme. La distancia con esta proyección solo es correcta a lo largo del ecuador, luego el error aumenta con la latitud. De hecho, como puede ver en una vista global, los paralelos mantienen la misma longitud en los mapas. Por ejemplo, el factor de escala horizontal, que es 1 en el ecuador, es igual a 1,15 en una latitud de 30 ° (error del 15%), 2 en una latitud de 60 ° y 11,5 en una latitud de 85 ° (factor de escala 1 / cos (latitud))
Web Mercator usa WGS 84 Lat / Long como si fueran ángulos en una esfera, presumiblemente para reducir el tiempo de procesamiento. Esto conduce a más distorsiones, especialmente cuando se aleja del ecuador, que hacen que Web Mercator no sea conforme. Sin embargo, el impacto de la “pseudoesfericidad” en las mediciones de distancia en latitudes altas es mucho menor que el diseño de la proyección de Mercator.
El mismo razonamiento se aplica a la distorsión de área.
Puede estudiar el error haciendo consultas SQL con Spatialite-gui que tiene una función ST_Length con una descripción en https://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html
devuelve la longitud de c (medida en metros). Si el argumento use_ellipsoid se establece en TRUE, la longitud precisa (pero más lenta) se calculará en el Elipsoide; de lo contrario, se calculará en el Gran ciclo (aproximado, pero más rápido).
Ejemplos:
- Ejemplo uno, cadena de líneas orientada de este a oeste, de un grado de longitud, ubicada en una latitud de 20 ° N
Gran longitud del círculo:
select ST_Length(ST_GeomFromText('LINESTRING (0 20,1 20)',4326),0)
104489.040752
Longitud a lo largo del elipsoide:
select ST_Length(ST_GeomFromText('LINESTRING (0 20,1 20)',4326),1)
104646.930934
Luego, la longitud cuando la cadena de líneas se proyecta primero en EPSG: 3857:
select ST_Length(ST_Transform(ST_GeomFromText('LINESTRING (0 20,1 20)',4326),3857))
111319.490793
Diferencia de longitud a lo largo del elipsoide 6673 m.
- Ejemplo dos, cadena de líneas orientada de este a oeste, de un grado de longitud, ubicada en una latitud de 60 ° N
Gran longitud del círculo:
select ST_Length(ST_GeomFromText('LINESTRING (0 60,1 60)',4326),0)
55597.010615
Longitud a lo largo del elipsoide:
select ST_Length(ST_GeomFromText('LINESTRING (0 60,1 60)',4326),1)
55799.470393
Luego, la longitud cuando la cadena de líneas se proyecta primero en EPSG: 3857:
select ST_Length(ST_Transform(ST_GeomFromText('LINESTRING (0 60,1 60)',4326),3857))
111319.490793
Diferencia de longitud a lo largo del elipsoide 55520 m.
Puede realizar consultas similares con PostGIS, pero debe utilizar “geografía” http://postgis.net/docs/ST_Length.html.