Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Координаты Google.Maps и Яндекс.Карты (https://javascript.ru/forum/offtopic/21136-koordinaty-google-maps-i-yandeks-karty.html)

greatilya 30.08.2011 12:32

Координаты Google.Maps и Яндекс.Карты
 
Имеется 2 вопроса, на которые интересно получить ответ, в интернете не смог найти ответа.

1. какой тип данных использовать для хранения координат в БД MySQL?
координаты имеют вид: 50.12345 (только не знаю точно сколько цифр до точки и после) Как я понимаю логичнее использовать тип FLOAT и хранить в двух полях. Если есть, знаток координат, то подскажите сколько цифр может быть до и после точки.

2. у Google.Maps и Яндекс.Карты одна система координат. Следовательно координаты от гугла подходят к яндексу, правда говорят что есть смещения на *цать метров. У кого-то есть реальный опыт одновременного использования двух видов карт на сайте? Поделитесь, какое реально идет смещение.

B@rmaley.e><e 30.08.2011 12:45

Цитата:

Сообщение от greatilya
координаты имеют вид: 50.12345 (только не знаю точно сколько цифр до точки и после) Как я понимаю логичнее использовать тип FLOAT и хранить в двух полях. Если есть, знаток координат, то подскажите сколько цифр может быть до и после точки.

А чем VARCHAR не нравится? Я бы не советовал FLOAT из-за проблем IEEE754 с точностью.

greatilya 30.08.2011 13:10

Цитата:

Сообщение от B@rmaley.e><e
А чем VARCHAR не нравится? Я бы не советовал FLOAT

Спасибо, за подсказку!
Ну раз так, то наверно логичнее использовать VARCHAR. Тогда можно хранить в одном поле через пробел или запятую.
Еще бы кто-то подсказал какая размерность у координат, чтобы создать VARCHAR нужной длины.

devote 30.08.2011 19:52

DOUBLE и числа такого типа 53.6754

Триви 30.08.2011 20:07

Коллеги, если в запросах планируются какие то вычисления с координатами, то VARCHAR не покатит!
Юзаю FLOAT, из ног в руки проблем не наблюдал..
Делал выборки из базы, доставая точки относительно другой в определенном радиусе
и сравнивал с результатами функций яшкиного API для определения расстояний -
погрешности были настолько минимальны, что можно было и забить.

Триви 30.08.2011 20:13

Цитата:

Сообщение от greatilya (Сообщение 123469)
Еще бы кто-то подсказал какая размерность у координат, чтобы создать VARCHAR нужной длины.

float(10,6) вполне достаточно,
если ты не собираешься мерить расстояния
от струи пениса комара в Москве
до четвертой по счёту щёточки на второй левой лапке майского жука во Владивостоке :)

greatilya 30.08.2011 20:27

Цитата:

Сообщение от Триви
если в запросах планируются какие то вычисления с координатами, то VARCHAR не покатит

да, тоже верно... вычисления скорее всего после буду делать, видимо придется float.
Цитата:

Сообщение от B@rmaley.e><e
Я бы не советовал FLOAT из-за проблем IEEE754 с точностью

Можете немного уточнить, что за проблемы с точностью(не смог найти инфы по данному вопросу) и на сколько вероятна погрешность (как я понял вы говорили о погрешности в вычислениях).

Цитата:

Сообщение от Триви
float(10,6) вполне достаточно

а почему 10? если не 2 или 3 наверно будет достаточно для целой части числа.

Триви 30.08.2011 20:33

Цитата:

Сообщение от greatilya (Сообщение 123652)
а почему 10? если не 2 или 3 наверно будет достаточно для целой части числа.

Сорри, отвлекают.. я имел ввиду цифры после точки..
для целой части тройки достаточно

greatilya 30.08.2011 20:37

Цитата:

Сообщение от devote
DOUBLE и числа такого типа 53.6754

всё-же нужно разобраться, что лучше, float или double.

Цитата:

Сообщение от Триви
я имел ввиду цифры после точки

значит после запятой может быть 6 цифр максимум в координатах?

greatilya 30.08.2011 20:42

Цитата:

Сообщение от greatilya
всё-же нужно разобраться, что лучше, float или double.

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

Если верить Яндексу (я сейчас написал вывод координат для точек на карте) то смог установить что координаты бывают как положительные, так и отрицательные. Целая часть 3 знака. Дробная часть до 6 знаков.

При попытке создать DOUBLE( 3, 6 ) получаем ошибку:
Цитата:

#1427 - For float(M,D), double(M,D) or decimal(M,D), M must be >= D
Тут говорится что целая часть, должна быть больше или равна дробной. Следовательно придется делать так: DOUBLE( 6, 6 )

Тут я был не прав, даже с DOUBLE( 6, 6 ) при попытке сохранить число 123.123456 я получил ошибку
Цитата:

#1264 Out of range value
ИМХО: истина найдена. прошу прощение за непрофессиональность и флуд. Необходим DOUBLE( 9, 6 ), где 9 количество сумарное символов, а 6 число знаков после точки. (если я не прав, просьба поправить)


Часовой пояс GMT +3, время: 09:25.