【问题标题】:MySql or PHP function to convert longitude and latitude to decimal degreesMySql 或 PHP 函数将经度和纬度转换为十进制度
【发布时间】:2010-10-28 14:06:15
【问题描述】:

我花了一些时间研究论坛和其他地方来解决这个问题,但没有任何结果,我决定问一下。

我有包含 NMEA 语句的日志文件。我已经在 mysql 数据库中存储了数十万个句子。我已将经度和纬度存储为双数据类型。我想转换这些目前采用这种格式的经度和纬度:

6013.45368, 2445.28396 

转为十进制度格式:

60,155095, 24,74456

如果有人可以提供帮助,我将不胜感激。非常感谢。

我想出了一个使用 floor 和 round 函数的 sql select 语句,如下所示:

insert into converted_long_lat (new_latitude, new_longitude) select round ((FLOOR(latitude / 100) + (latitude - 100 * FLOOR(latitude / 100)) / 60), 5), round((FLOOR(longitude / 100) + (longitude - 100 * FLOOR(longitude / 100)) / 60),5) FROM    `rmc_raw_data`: 

结果没问题,但纬度,甚至在应用舍入函数之前返回一个舍入整数,如 24,省略小数部分。如何保留小数部分?

【问题讨论】:

    标签: php mysql gps


    【解决方案1】:

    您的上述转化是否正确?

    NMEA 句子的纬度和长度以度和十进制分钟表示,因此 6013.45368 是 60 度 13.45368 分钟,我将其设为 60+(13.45368/60)=60.22428 度,而 2445.28396 变为 24.75473 度。

    http://www.gpsinformation.org/dale/nmea.htm#position

    http://home.online.no/~sigurdhu/Deg_formats.htm

    从十进制度分 (D m) 到十进制度 (d)

    【讨论】:

    • 没有?以上数字仅用于示例目的,并非实际转换。你所展示的正是我想要做的,但由于我在数据库中有数据,我认为我可以获得任何功能来自动处理你刚刚完成的事情。 mysql中有这样的功能吗?谢谢
    • Jaydee 我如何在 mysql 中处理这个来影响数千个这样的数据?你能提供一些线索吗?谢谢
    • 我想出了一个使用 floor 和 round 函数的 sql select 语句,如下所示: insert into converted_long_lat (new_latitude, new_longitude) select round ((FLOOR(latitude / 100) + (latitude - 100 * FLOOR) (latitude / 100)) / 60), 5), round((FLOOR(longitude / 100) + (longitude - 100 * FLOOR(longitude / 100)) / 60),5) FROM rmc_raw_data: 结果ok但是纬度,甚至在应用舍入函数之前返回一个舍入整数,如 24,省略小数部分。如何保留小数部分?
    • 问题已解决。纬度列设置为 int 而不是 double
    • 很高兴听到这个消息。我要说我不知道​​一个特定的函数,但你应该能够相当容易地在 SQL 语句中编写一些东西。 (我有时间睡觉!)
    【解决方案2】:

    我使用以下方法解决了它:

    insert into converted_long_lat (new_latitude, new_longitude) SELECT ROUND((FLOOR(latitude / 100) + (latitude - 100 * FLOOR(latitude / 100)) / 60), 5), ROUND((FLOOR(longitude / 100) + (longitude - 100 * FLOOR(longitude / 100)) / 60),5) FROM rmc_raw_data`
    

    纬度返回整数的另一个问题是由于它的列在数据库中设置为 int 类型。希望其他人发现此解决方案有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2011-10-31
      • 2013-01-05
      • 2021-12-26
      相关资源
      最近更新 更多