【问题标题】:Converting Southing/Easting GPS coordinates to Latitude/Longitude将南/东 GPS 坐标转换为纬度/经度
【发布时间】:2012-12-30 07:13:16
【问题描述】:

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

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

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

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

我已经搜索了 Southing/Easting,但是什么也没找到,更像是 Northing/Westing 等,即便如此,也没有太多信息..

编程部分我并不需要太多帮助,只需要了解如何执行这两种格式之间的转换的实际概念即可。

谢谢!

【问题讨论】:

  • this question 可能会有所帮助。此外,我可以看到更经常使用北向而不是南向。
  • 我应该在谷歌搜索中提到我看到东/北...不是南/东。令人难以置信的是,为什么创建该系统的人并不仅仅满足于纬度/经度。总之……
  • 谢谢我检查了那个链接..不幸的是我不认为这是我要找的:(
  • 您能否向我们展示您的数据示例?可以通过多种方式对其进行格式化。
  • 好的一些例子:Southing 32.23453 Easting 150.13248 and Southing 31.00034 Easting 150.92352 我们也在这个国家使用公制。

标签: javascript geolocation gps coordinates coordinate-transformation


【解决方案1】:

您的问题中没有足够的信息来回答它 - 但您也许可以自己弄清楚这些信息。以下是我的处理方式。

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

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

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

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

如果我们转到 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 西 500,我们会得到它的纬度和经度如下:

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

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

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

如果您的零点和计量单位没有被历史遗忘,那么您已经取得了重大的领先优势。如果有,您可以使用这种技术来推断它们——但您可能需要使用多个相关性对其进行微调,直到您获得感觉可靠的值。

【讨论】:

  • 我有点震惊,有人会否决如此详细(和准确)的答案——但无论如何。无论如何,我想到了可能与您相关的另一点:北/西/南/东坐标通常不考虑地球的曲率,而纬度和经度本质上会考虑。北/南/东/西坐标通常还涉及如此有限的地理区域,以至于地球的曲率不会对经度/纬度的转换产生太大影响。但是,如果您的区域很大,则可能需要一些花哨的数学运算,例如半正弦公式。
  • 我们的区域只关注一个州。
  • 除非那个州是阿拉斯加,否则我认为你会很好,而不需要引入复数计算的复杂性。如果我说的任何内容没有意义或似乎不起作用,请告诉我,如果可以,我会提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 2020-02-23
  • 1970-01-01
  • 2020-07-04
  • 2016-10-09
  • 2013-09-21
相关资源
最近更新 更多