|
|
|
animegirl |
|
|||
Незнайка на Марсе Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Работаю с картами от гугла, он выдаёт координаты с точностью в 16 знаков после запятой, использует градусы, но забивает на угловые минуты и секунды, и после запятой идёт в десятеричном измерении. В моей логике, берём окружность в 40000 км это 111 км на 1°, 111 км это у нас 111000 метров, то есть мне хватит 6 знаков после запятой, чтоб записывать данные с точностью до метра. Разметила в базе колонки, под это дело, сейчас сидела тестировала запись позиционирования, и когда начала проверять сильно удивилась насколько сдвинуты некоторые из точек. Если учесть, что тестировала, я на странах, то погрешность на взгляд при таком масштабе идёт на десятки километров. Откуда такие сдвиги, неужели от того, что база отрезала эти 16 цифр после запятой до указанных 6-ти?
Это сообщение отредактировал(а) animegirl - 19.11.2012, 08:38 -------------------- Скажи миру - НЯ! |
|||
|
||||
Pavia |
|
|||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
40 000 000 м
360,000000±0,000001 ° ±0,000001°/360,000000°*40 000 000 м=±0,(111) м Этого достаточно. Float(Single) имеет точноть 22 бита или что около шети десятичных знаков 360,000±0,001° 0,001°/360,00*40 000 000 м=111,(1) м Обычно считается что при выполнение алгоритм точность теряется. Зависит от алгоритма. |
|||
|
||||
beroal |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 212 Регистрация: 18.1.2003 Где: Украина Репутация: нет Всего: 3 |
Может, просто в вашей программе есть ошибка?
|
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
в интерфейсе гугл (и яндекс тоже) довольствуется шестью знаками Добавлено через 3 минуты и 20 секунд типа https://maps.google.ru/maps/place?q=55.750219,37.61579 |
|||
|
||||
animegirl |
|
|||
Незнайка на Марсе Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Просто в файл скопируйте и где-нибудь на карте кликните Добавлено через 5 минут и 54 секунды Pavia, Несколько раз перепрочла ваш пост, не поняла, ничего кроме того, что флоат имеет 6 знаков после запятой (Не поняла почему только 6) -------------------- Скажи миру - НЯ! |
|||
|
||||
animegirl |
|
|||
Незнайка на Марсе Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
beroal, Да программа - обычный ПХП скрипт, взял данные переложил в базу эти данные. Единственный момент, что поля в базе указаны как 9,6, то есть 9 знаков максимум, 6 после запятой, и база отрезает этот фактор.
-------------------- Скажи миру - НЯ! |
|||
|
||||
lvt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 31.10.2008 Репутация: нет Всего: нет |
6 знаков после запятой, это очень мало. Храни столько знаков, сколько тебе сам Google отдает. Я так делаю. В базу такое число помещается легко.
Про размер поля в базе не дочитала. В базе используй тип float. Это сообщение отредактировал(а) lvt - 19.11.2012, 17:28 |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
если сократить результат до 6 знаков, результат не меняется Добавлено через 2 минуты и 47 секунд меня терзают смутные сомнения: гугл возвращает число с двойной точностью, но походу значащих цифр после запятой там не больше 7 |
|||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 2 Всего: 85 |
Если промахиваетесь в странах, то это точно не погрешность округления. Скорей всего, дело в неправильно выбранной проекции. Гугл использует меракторскую проекцию. (довольно уродливая проекция, кстати). А вы используете, скорей всего другую проекцию. Это сообщение отредактировал(а) volatile - 20.11.2012, 23:53 |
|||
|
||||
Pavia |
|
|||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Или в неправильных рассчётах проекции. У самого так было, что координаты промахивались на 0,1-0,5°. Пока не переписал по нормальному.
float имеет 22 бита на мантису. Log10(2^22 )=6.622 - десятичных знака. |
|||
|
||||
maxdiver |
|
|||
Опытный Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Дело может быть не только в выборе проекции (меркатор/геодезика), но и в том, что есть различие между сферической и эллиптической проекцией, и ваши данные могут быть не в той проекции, чем на картах гугла. Правда, расхождение от этого не должно составлять "несколько километров", как у вас.
Цитата в тему:
Это сообщение отредактировал(а) maxdiver - 21.11.2012, 12:29 |
|||
|
||||
animegirl |
|
|||
Незнайка на Марсе Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
В том то и вся нелогичность, что все данные я брала с гугла, мне нужно было на скорую руку забить пару десятков стран в базу, брать надо было крайние точки, север запад восток юг, я сделала скрипт, схожий с тем, что сверху, кликала на точку и указывала для какой из сторон это значение, потом записывала в базу, то есть нигде я данные не искажала, потом решила проверить результат, выдала эти записи на той же карте с которой записывала, и заметила, что местами там слишком уж жесткое отклонение
-------------------- Скажи миру - НЯ! |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |