MySql или PHP функция для преобразования долготы и широты в десятичные градусы - PullRequest
1 голос
/ 28 октября 2010

Я потратил некоторое время на изучение форума и других мест, чтобы решить эту проблему, но ничего не дал, и я решил спросить.

У меня есть файлы журналов, содержащие предложения NMEA.Я сохранил эти предложения сотнями тысяч в базе данных MySQL.Я сохранил долготы и широты как двойной тип данных.Я хочу преобразовать эти долготы и широты, которые в настоящее время находятся в этом формате:

6013.45368, 2445.28396 

в формат десятичной степени, который:

60,155095, 24,74456

Буду признателен, если кто-то может помочь с этим,Большое спасибо.

Я придумал оператор выбора sql с использованием функций floor и round следующим образом:

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 без десятичной части.Как я могу сохранить десятичную часть?

Ответы [ 2 ]

1 голос
/ 28 октября 2010

Являются ли ваши преобразования выше верных?

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 голосов
/ 29 октября 2010

Я использовал следующее, чтобы решить это:

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. Надеюсь, кто-то еще найдет это решение полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...