【问题标题】:Google Maps pixel height by latitude谷歌地图像素高度按纬度
【发布时间】:2011-12-29 18:55:35
【问题描述】:

在谷歌地图中,​​离极点越近,地图越伸展,地图的每个像素代表的运动越少(在北极处渐近为 0)

我正在寻找一个公式,将像素的宽度(以度为单位)与纬度(即地图上像素表示的真实世界距离)联系起来。我这里有一些数据点用于缩放级别 12 (IIRC)

Lat Width
0   0.703107352
4.214943141 0.701522096
11.86735091 0.688949038
21.28937436 0.656590105
30.14512718 0.60989762
35.46066995 0.574739011
39.90973623 0.541457085
41.5085773  0.528679228
44.08758503 0.507194173
47.04018214 0.481321842
48.45835188 0.468430215
51.17934298 0.442887842
63.23362741 0.318394373
72.81607372 0.208953319
80.05804956 0.122131316
90  0

这样做的原因是我想输入 lat/lng 对并准确找出它们相对于 0,0 的位置

【问题讨论】:

  • “像素高度”是什么意思?
  • ... 和“缩放级别” - 哪个缩放级别?
  • 像素的高度是地图的一个像素所代表的真实单词距离。

标签: google-maps math


【解决方案1】:

我可能错了,但你确定这些点是像素高度吗?它们似乎是一个余弦,它是像素宽度而不是高度。 经过一点三角函数后,像素高度调整为公式:

其中R是地球半径,phi是纬度,h是赤道像素的高度。 这个公式不适合你的观点,这就是为什么我问它是否是宽度。

无论如何,如果您想要如此高的精度以至于无法使用上一个答案中的近似值,您还应该考虑带有纬度的 R 变量,即使这样我也不认为您会得到确切的结果。

更新: 那么公式将是一个余弦。如果你想取地球的可变半径,公式是:

其中 R 是地球的半径,d(0) 是赤道处的像素宽度。假设地球是一个椭球体,您可以使用这个公式来计算 R:

a = 6378.1(赤道)和 b = 6356.8(极点)

【讨论】:

  • 你说得对,我的意思是每个纬度像素的宽度,我会编辑我的问题以匹配。
  • 那么公式接近余弦,检查我更新的答案。
【解决方案2】:

虽然我不确定“像素高度”是什么意思,但数据图(如下所示)似乎符合等式

y = a + bx + cx^2 + dx^3 where y = height, x = latitude

有系数

a =  7.0240278979641990E-01
b =  3.7784208874521786E-04
c = -1.2602864112736206E-04
d =  3.8304225582846095E-07

寻找方程的一般方法是首先绘制数据,然后假设函数类型,然后进行回归以找到系数。

【讨论】:

  • 一个像素的高度是地图的一个像素表示的真实单词距离的多少。我做了你上面所做的,但它只给出了一个近似值。我还尝试了一些余弦系数,但这并没有让我走得那么远。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多