将像素转换为经纬度坐标

6

你好,编程世界,

我正在使用Google Maps API v3,并且我有一个地图覆盖层,我需要从中获取特定的坐标。

在这张图片中,我已经成功地将左上角和右下角的两个像素坐标集手动转换为纬度和经度坐标。我找到了以下公式:

左上角:
(1px [x-轴], 1px [y-轴]) 像素坐标等于...
(-109.05005006119609° [经度], 41.00062580014626° [纬度]) 纬度/经度坐标

右下角:
(575px [x-轴], 423px [y-轴]) 像素坐标等于...
(-102.0423399657011° [经度], 36.99314427042206° [纬度]) 纬度/经度坐标

然而,我的老板后来决定他更愿意让Google Maps使用Google的折线绘制类来绘制此图形(所以我需要我在叠加层中绘制的每个边角的纬度/经度坐标)。

我的问题是,给定这两组坐标,是否有某种方程或公式可以使用,以便我可以找到像素坐标(我已经在图像地图文件中拥有)并将其转换为纬度/经度坐标。

例如:感兴趣的点在132像素x轴和10像素y轴处= a°经度和b°纬度 找到a和b。

非常感谢您的帮助, Llewgnolm

1个回答

3
我和一位朋友交流后,终于得到了答案。我们创建了一个线性方程组:
纬度/经度=乘数×像素+常量(L=m*p+c)

我们将手动找到的数字代入两个方程式中(例如对于经度):
-109.05…=m*(1)+c
-102.04…=m*575+c


然后解出 m 和 c 的值,最终结果如下(以经度为例):
m = 0.01220895749767
c = -109.06228374530811

现在,我们可以将 m 和 c 的值代入公式,通过任何像素值找到相应的纬度/经度值,例如 (以经度为例):
L = 0.01220895749767(132) - 109.06228374530811
L (x 方向上 132 像素处的经度) = -107.45070135561566°

此方法可精确计算出图片像素到小数点后 14 位的经纬度值。至于纬度,我使用了不同的基于纬度的数字来创建另外一个方程组,从而找到不同的 m 和 c 值。希望这能帮助那些遇到类似问题的人们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接