首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反演Web Mercator方程将像素转换为经度

反演Web Mercator方程将像素转换为经度
EN

Stack Overflow用户
提问于 2017-11-26 16:22:33
回答 1查看 585关注 0票数 0

我使用公式将地球上的地理点转换为像素坐标,正如Daniel的教程:https://gist.github.com/shiffman/a0d2fde31f571163c730ba0da4a01c82中所解释的那样

这就是:

代码语言:javascript
复制
function webMercX(lon, zoom) {
  lon = radians(lon);
  var w = 256; //width / 2;
  var a = (w / PI) * pow(2, zoom);
  var b = (lon + PI);
  var x = a * b;
  return x;
}

function webMercY(lat, zoom) {
  lat = radians(lat);
  var w = 256; //height / 2;
  var a = (w / PI) * pow(2, zoom);
  var c = tan(PI / 4 + lat / 2);
  var b = PI - log(c);
  var y = a * b;
  return y;
}

基于:Mercator

现在,为了实现精确的鼠标交互,我试图做相反的事情:将像素转换为Lat和Lon。我已经成功地反演了第一个方程,所以x to lon很好地工作:

代码语言:javascript
复制
function inverseWebMercX(x,zoom) {
    var w = 256; //width / 2;
    var a = (w / PI) * pow(2, zoom);
    var b = x/a;
    var lon = b-PI;
    lon = degrees(lon);
    return lon;
}

这可以通过

inverseWebMercX(webMercX(10,2),2);

但到目前为止,我还没有从y转换为lat,可能是因为我没有解var c和var lat的偏方程:

代码语言:javascript
复制
function inverseWebMercY(y,zoom) {
    var w = 256; //width / 2;
    var a = (w / PI) * pow(2, zoom);
    var b = y/a;
    var c = -(exp(b) + PI);
    var lat = (atan2(c) - (PI / 4))*2;
    lat = degrees(lat);
    return lat;
}

因此,简单地说,也许拥有较好数学背景的人知道如何分别求解lat和c的这些方程:

代码语言:javascript
复制
var c = tan(PI / 4 + lat / 2); 
var b = PI - log(c);

感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-27 18:22:41

@user3290797找到了cuplrit,我不得不将atan2()更改为atan()。到目前为止,这个方法运行得很好:(顺便说一句,我在P5js中使用了它,所以数学函数看起来比它们应该更简单)

代码语言:javascript
复制
function inverseWebMercX(x,zoom) {
    var w = height / 2;
    var a = (w / PI) * pow(2, zoom);
    var b = x/a;
    var lon = b-PI;
    lon = degrees(lon);
    return lon;
}

function inverseWebMercY(y,zoom) {
  var w = height / 2;
  var a = (w / PI) * pow(2, zoom);
  var b = (y/a);
  var c = exp(PI-b);
  var lat = (atan(c) - (PI / 4))*2;
  lat = degrees(lat);
  return lat;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47498309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档