2009-06-17 3 views
1

Я пишу компонент геокодирования для приложения, которое я создаю, и решил использовать Yahoo Maps. Я написал обложку API геокода и некоторые модульные тесты и назвал это днем. Вернулся на следующий день, провел тесты и обнаружил, что широта и долгота изменились. Имейте в виду, изменения были достаточно малы, чтобы не иметь для меня значения, но это было достаточно значительным, чтобы повлиять на округление до 4 знаков после запятой, которые я использовал в своем модульном тесте, чтобы сравнить результат.Изменение широты и долготы?

Я никогда не слышал об изменении широты и долготы раньше. Это то, что я должен ожидать/учитывать? Может ли кто-нибудь объяснить, почему?

+0

Не могли бы вы уточнить, что делает ваш модульный тест. – rein

ответ

4

Геокодирование, особенно когда сделано по адресам, редко на 100% точнее. Есть много компаний, которые ничего не делают, кроме компиляции уличных данных, используемых для целей геокодирования.

Данные неточно, но часто обновляются для улучшения соответствия адресов. Когда это произойдет, вы получите другой результат. Я предполагаю, что произошла одна из двух вещей:

1) Yahoo обновил исходные данные.

2) Вы получили результат с другого сервера с другим набором исходных данных.

+0

Я думал о потенциале №1, но это было бы причудливым совпадением.# 2 на самом деле звучит более вероятно, но тогда тест прошел отлично весь день вчера, и теперь он отлично работает, когда я изменил значение для сравнения. Я начинаю думать, что расчеты на стороне Yahoo каким-то образом зависят от даты. – Chris

+0

Я предполагаю, что они, будучи веб-службой, запускают это на всей ферме машин. Если на некоторых из них есть несколько другая версия программного обеспечения или версия данных, вы получите тонко отличающиеся результаты. Это одно ОГРОМНОЕ преимущество коммерческого геокодирования - вы контролируете, когда происходят обновления, и они сообщают вам, как «хороший» матч (т. Е.: Почтовый, переписной, переписной, уличный, точный и т. Д.) –

5

Континентальный дрейф?

+3

+1 - LOL - это очень, очень смешно –

+0

Это может быть глобальное потепление. – rein

+0

Как ни странно, моя первая мысль была именно такой. Затем я ударил себя и сказал: «Я, нет никакого способа, Yahoo, это хорошо». : D – Chris

1

Алгоритмы, используемые геокодированием, являются неточными. Они делают определенные догадки. В дополнении к информации, приведенной выше, проверка этого официального документа:

http://www.urisa.org/files/goldberg.pdf

который говорит об этих алгоритмах.

+0

Я понимаю неточные вычисления , но неточность не подразумевает несогласованности. Я бы ожидал, что такая же неточность сохранится с одного дня до следующего, не так ли? – Chris

0

Похоже, что это может быть ошибка округления при выполнении вычислений.

Являются ли результаты согласованными сейчас или вы по-прежнему получаете несколько разные результаты?

+0

Теперь согласен. Мне интересно, если некоторые расчеты на Yahoo! сторона зависит от даты. Я попробую еще раз завтра и посмотрю, не закончится ли тест. – Chris

+0

Если данные будут согласованы с этого момента, я бы пошел с обновлением базы данных на конце Yahoo. – ChrisF

-1

Карта не территория

Что-то, что это очень легко для нас, как программистов, чтобы потерять след, что данные представляют мир, они не являются реальными аспектами из в мире ,

У вас есть другие ответы, говоря то же самое в более подробно, конкретно о геокодировании, но стоит помнить, в общем, как хорошо ....

+0

Вниз без причины? Что, на ваш взгляд, не так с этим? Я начал намереваться сказать некоторые из тех же вещей, что и Рид Копси и Кристофер, но их ответы пришли, когда я писал. Принцип все еще применяется - Lat/Long не меняются, данные * о * их делают .... – RolandTumble

+0

Помните, что нисходящий поток не обязательно исходит от вопроса. Я не коснулся вашего ответа. – Chris

+0

Я знаю об этом - извините, что я не был ясно, что мой вопрос был для downvoter, кто бы это ни был. – RolandTumble

0

Интересно.

Мне очень нравится то, что происходит, когда сравниваются «реальные» числа для равенства. Обычным решением этой «проблемы» является вычисление Abs [xy] < tol, где x, y - ваши действительные числа (или поплавки или удваивания), а tol - небольшое число, которое представляет ваш критерий для определения того, что числа достаточно близки к считаются равными для ваших целей.

Смежные вопросы