Запрос, возвращающий неожиданные результаты - PullRequest
0 голосов
/ 01 октября 2019

ОК, Истинные верующие. Я немного застрял на этом. У меня есть строка запроса Nominatim, которая возвращает разные GPS-координаты для одного и того же местоположения в зависимости от того, как оно напечатано. Я знаю, это звучит как то, как это должно работать, но оставайся со мной.

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

Предыстория:

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

Чтобы начать, я нашел адрес, который Номинатим просто не мог разрешить. Адрес был 17500, Church Avenue S, Alva, FL, 33920. Запрошенный мною запрос выглядит следующим образом:

https://nominatim.openstreetmap.org/?street=17500%20Church%20Avenue%20Scity=Alva&postalcode=33920&&state=FL&format=json

Как вы можете видеть, это возвращает пустую строку json (whop,whop).

Однако, если я просто удалю тег S после Avenue, я получу обратно данные. взгляните на:

https://nominatim.openstreetmap.org/?street=17500%20Church%20Avenue&city=Alva&postalcode=33920&&state=FL&format=json

Итак, вот в чем проблема. Я не хочу, чтобы пользователю приходилось очищать свои входные данные (особенно за такую ​​маленькую ошибку, чтоможет быть опечатка в живой среде). В этом случае база данных Tiger, на которой работает Nominatim, просто неверна. В Альве, штат Флорида, нет церкви Ave S. Я также обнаружил, что база данных не считает Альву городом, а деревушкой. Хорошо. Я вычеркнул город из запроса, предполагая, что Номинатим был достаточно умен, чтобы связать результаты с почтовым индексом.

Ну, вы знаете, что они говорят о предположениях ...

https://nominatim.openstreetmap.org/?street=17500%20Church%20Avenue&postalcode=33920&state=FL&format=json

Итак, я и мой новый друг Umption заметили, что приведенный выше запрос дает два результата (один правильный и один неправильный). Я выбросил результаты из своего приложения и понял, что получаю только один результат. Затем я спросил Умптиона, сообщали ли мы когда-нибудь об ошибке с Церковной Аве S богам Номинатим. Оказывается, мы сделали это, и боги Номинатим обновили свою базу данных, но не потрудились выпустить обновление для остальных из нас локально размещенных peons.

Проблема решена, верно? Просто подожди обновления. Неправильно. Проблема не решена. Это только пролило некоторый свет на большую проблему. Что мы будем делать с адресом, который не соответствует действительному уровню. Видите ли, сервер может дать (что он думает) совершенно достоверные результаты, выходящие далеко за рамки того, что пользователь должен видеть. В этом случае, Церковный проспект, Alva возвращал результаты за 500 миль в Чипли, штат Флорида

. Некоторые варианты:

  • с использованием API-интерфейса USPS для проверки адресов (любой имеет опыт работы сthis?)
  • пытается создать ограничивающую рамку для каждого введенного почтового индекса
  • создает общую ограничивающую рамку на основе всех найденных почтовых индексов

У каждой опции есть свойплюсы и минусы (мне нравится № 2 лучше всего). Есть идеи из пантеона?

...