2

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

在我们的数据库中,站点的位置以 Southing/Easting 格式存储。

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

谁能告诉我解决这个问题的公式或最佳方法?

我已经对 Southing/Easting 进行了搜索,但是没有出现任何结果,更像是向北/向西等,即使那样,也没有太多信息..

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

谢谢!

4

1 回答 1

5

您的问题中没有足够的信息来回答它 - 但您可能能够自己找出信息。这就是我将如何去做。

向南和向东(以及向北和向西)只是测量距某个“零点”的距离。如果您知道零点是什么以及单位是什么,它会变得容易得多——但如果您不知道,转​​换也不是不可能的。

例如,亚特兰大市位于乔治亚州迪凯特以西 5 英里处(我假设在这个例子中是正西,尽管它实际上是西南偏西 5 英里)。埃默里大学位于迪凯特以北 1.5 英里和以西 1.5 英里(这是一个近似值,但出于我们的目的,我们假设它完全正确)。

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

  1. 我们被告知亚特兰大在北 0 和西 8800。
  2. 我们被告知埃默里大学位于北 2640 和西 2640。
  3. 没有人记得迪凯特是网格的起源。
  4. 没有人记得距离代表什么单位(顺便说一句,它是码)。

如果我们去谷歌地图并在亚特兰大的零英里柱上放置一个纬度标记(可能必须在谷歌地图实验室中启用),我们发现它位于 33.75116,-84.38740。

如果我们对埃默里大学做同样的事情,我们会发现它位于 33.7909,-84.3248。

然后我们可以做以下数学运算来找到经度与未知西西单位的比率:

绝对值(-84.38740 - -84.3248)=(绝对值(8000 - 2640))* x
0.0626 = 5360 * x
x = 0.0626 / 5360
x = 0.000011679

从那里我们可以找到我们理论上未知的零点的经度,方法是将亚特兰大的西行值乘以该因子,然后将其(因为亚特兰大位于本初子午线以西,因此经度数为负数)与亚特兰大的已知经度相加:

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

将相同的逻辑应用于纬度,我们可以根据未知的北移单位找到一个因子:

绝对值(33.75116 - 33.7909)=(绝对值(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 西 500,我们会得到它的纬度和经度,如下所示:

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

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

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

如果你的零点和计量单位没有被历史遗忘,那么你就有了一个重要的开端。如果有,您可以使用这种技术来推断它们——但您可能必须使用多个相关性对其进行微调,直到您获得感觉可靠的值。

于 2013-01-16T03:54:16.467 回答