我有一张用墨卡托投影的JPEG地图,我想知道如何将给定的x、y坐标与其纬度和经度相关联。我查看了Gudermannian函数,但是我不知道如何使用它。具体来说,它需要哪些输入?我找到的实现(JavaScript)似乎接受-PI到PI之间的范围,但是我的像素y值和该范围之间有什么关系呢?
此外,我找到了一个函数,它接受纬度并返回Google Maps的瓦片,这也使用了墨卡托投影。如果我知道如何反转此函数,我就可以非常接近得到我的答案了。
此外,我找到了一个函数,它接受纬度并返回Google Maps的瓦片,这也使用了墨卡托投影。如果我知道如何反转此函数,我就可以非常接近得到我的答案了。
/*<summary>Get the vertical tile number from a latitude
using Mercator projection formula</summary>*/
private int getMercatorLatitude(double lati)
{
double maxlat = Math.PI;
double lat = lati;
if (lat > 90) lat = lat - 180;
if (lat < -90) lat = lat + 180;
// conversion degre=>radians
double phi = Math.PI * lat / 180;
double res;
//double temp = Math.Tan(Math.PI / 4 - phi / 2);
//res = Math.Log(temp);
res = 0.5 * Math.Log((1 + Math.Sin(phi)) / (1 - Math.Sin(phi)));
double maxTileY = Math.Pow(2, zoom);
int result = (int)(((1 - res / maxlat) / 2) * (maxTileY));
return (result);
}