将Southing / Easting GPS坐标转换为纬度/经度

时间:2013-01-16 02:21:47

标签: javascript geolocation gps coordinates coordinate-transformation

我正在使用JQuery Framework开发一个Web应用程序,并使用Geolocation来确定我们的硬件工作站在Google地图上显示的位置。

在我们的数据库中,网站的位置以南/东格式存储。

我需要一种方法将Southing / Easting坐标转换为谷歌地图可以理解的纬度/经度。

有人可以告诉我解决这个问题的公式或最佳方法吗?

我已经对Southing / Easting进行了搜索,但是没有出现,更像是北/西等等,即便如此,也没有多少信息..

编程部分我真的不需要太多帮助,只是关于如何执行这两种格式之间的转换的实际概念。

谢谢!

1 个答案:

答案 0 :(得分:4)

你的问题中没有足够的信息来回答它 - 但你可以自己找出这些信息。以下是我的意思。

南方和东方(以及北方和西方)只是测量距离某个“零点”的距离。如果您知道零点是什么,以及单位是什么,它会使更多更容易 - 但如果不这样做,那么转换并非不可能。

例如,亚特兰大市位于格鲁吉亚迪凯特以西5英里处(我假设这个例子正好向西,尽管它实际上是西南5英里)。埃默里大学位于迪凯特以北1.5英里处,距离迪凯特以西1.5英里(这是一个近似值,但出于我们的目的,让我们假设它完全正确)。

现在让我们假设一些事情:

  1. 我们被告知亚特兰大是北0和西8800。
  2. 我们被告知埃默里大学位于2640北部和2640西部。
  3. 没有人记得迪凯特是电网的起源。
  4. 没有人记得距离代表什么单位(顺便说一下,这是码)。
  5. 如果我们转到Google地图并在亚特兰大的零英里邮局中删除纬度标记(可能必须在Google地图实验室中启用),我们发现它位于33.75116,-84.38740。

    如果我们为埃默里大学做同样的事情,我们发现它是33.7909,-84.3248。

    然后我们可以进行以下数学计算,找出经度与未知西经单位的比率:

    abs(-84.38740 - -84.3248)=(abs(8000 - 2640))* x
    0.0626 = 5360 * x
    x = 0.0626 / 5360
    x = 0.000011679

    从那里我们可以通过将亚特兰大的西部值乘以这个因子,然后将它(因为亚特兰大位于本初子午线以西,因此具有负经度数)加到亚特兰大,我们可以找到理论上未知的零点的经度。已知经度:

    零经度= -84.38740 +(8000 * 0.000011679)
    零经度= -84.293968

    将相同的逻辑应用于纬度,我们可以找到基于未知北向单位的因子:

    abs(33.75116 - 33.7909)=(abs(2640 - 0))* y
    0.03974 = 2640 * y
    y = 0.03974 / 2640
    y = 0.000015053

    我们发现零纬度点的方式是一样的(在这个例子中很明显,因为亚特兰大位于北方0 - 但最好还是通过这些动作):

    零纬度= 33.75116 +(0 * 0.000015053)
    零纬度= 33.75116

    所以我们计算的零点是33.75116,-84.293968。谷歌地图确认此纬度与已知点相关。

    那么我可以通过使用这个导出的零点和导出的比率找到任何其他的北向和西向点。例如,如果我们被告知东西是3000-west-500,我们会得到它的纬度和经度如下:

    纬度= 33.75116 +(3000 * 0.000015053)
    (因为我们向北移动而添加)
    纬度= 33.796319

    经度= -84.293968 - (500 * 0.000011679)
    (因为我们向西移动而减去)
    经度= -84.2998075

    因此,北-3000西-500 = 33.796319,-84.2998075

    如果您的零点和计量单位没有丢失到历史记录中,那么您就有了一个重要的开端。如果有,你可以使用这种技术来推断它们 - 但是你可能不得不用多个相关性对它进行微调,直到你有值得感觉可靠的值。