MySql或PHP函数将经度和纬度转换为十进制度

问题描述:

我花了一段时间研究论坛和其他地方来解决这个问题,但什么也没有做,我决定问。MySql或PHP函数将经度和纬度转换为十进制度

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

6013.45368, 2445.28396 

小数点程度的格式是:

60,155095, 24,74456 

我将不胜感激,如果有人能够帮助这一点。非常感谢。

我想出了一个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圆整离开了小数部分。我怎样才能保留小数部分?

您的转化数据是否正确?

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)

+0

不是吗?以上数字仅用于示例目的而非实际转换。你已经显示的正是我想要做的,但因为我有数据库中的数据,我认为我可以得到任何功能来处理你刚才自动完成的。在mysql中有没有这样的功能?谢谢 – ibiangalex 2010-10-28 17:28:32

+0

Jaydee我如​​何处理这个在MySQL中影响成千上万的这样的数据?你能提供一些线索吗?谢谢 – ibiangalex 2010-10-28 17:47:12

+0

我想出了一个使用floor和round funtions的sql select语句,如下所示:insert into converted_long_lat(new_latitude,new_longitude)select round((FLOOR(latitude/100)+(latitude - 100 * FLOOR(latitude/100))/60),5),圆形((FLOOR(经度/ 100)+(经度-100 * FLOOR(经度/ 100))/ 60),5)FROM'rmc_raw_data':结果是好的,应用循环函数会返回像24一样舍入小数部分的四舍五入整数。我怎样才能保留小数部分? – ibiangalex 2010-10-29 07:05:39

我用下面的解决它:

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类型。希望其他人发现这个解决方案有用。