Проблемы геокодирования с OpenStreetMap/Nominatim
У меня есть сайт, который должен получить широту и долготу по адресу, указанному заказчиком.
Google/Bing/Yahoo слишком дороги для нас, поэтому мы пошли с OpenStreetMap / Nominatim.
к сожалению, пока он работал нормально во время тестирования, его неспособность найти около 50% введенных адресов, что является большой проблемой.
есть 3 вещи, которые мне интересно знать:
1) каков наилучший способ справиться с ситуацией где клиент действительно вводит неправильный адрес-отправьте им электронное письмо и попросите исправить его? Использовать сегменты адреса, пока что-то не будет найдено?
2) каков наилучший способ справиться с ситуацией, когда адрес в порядке, но я не могу найти его с OpenStreetMap? Или я делаю что-то не так с моим запросом в Nominatim?
3) Кто-нибудь знает о бесплатной/дешевой альтернативе, если OpenStreeMap не подходит для этой задачи? Я знаю, что это сотрудничество с открытым исходным кодом и поэтому не полный, но я думал, что у него было довольно хорошее покрытие, и что он вернул бы близлежащее местоположение, если бы у него не было точного местоположения - возможно, это так, и, возможно, я использую его неправильно.
вот пример: "182 livington ave, Олбани, Нью-Йорк, 12210, США"
Google maps найти это легко. Nominatim ничего не находит : http://nominatim.openstreetmap.org/search?format=xml&addressdetails=0&q=182%20livington%20ave,albany,New%20York,12210,US
спасибо,
Дейл
1 ответов
Я думаю, что вы ищете проверку адреса. Google, Nominatim и другие, выполняют только адрес приближение что хорошо для нахождения адресов, когда вы не уверены, что они есть, но результаты будут только лучше.
Я помог разработать API, который проверяет и геокодирует адреса в соответствии со строгими требованиями CASS™ под названием LiveAddress. Я запустил ваш пример адреса через Google, Nominatim и LiveAddress API, и это результаты:
Google нашел адрес, несмотря на опечатку в "Ливингстоне", но не мог гарантировать его действительность, говоря: "адрес приблизительный.- ...опять же, здесь сказано, что почти по каждому адресу, который вы пытаетесь найти.
Nominatim не находит его из-за опечатки. Возможно, недостатком использования Nominatim является то, что он не пытается компенсировать опечатки, проверить точность или полноту адресов и т. д. Исправить опечатку вернули информация, но кто знает, что нужно исправить и почему запрос все равно не удался.
LiveAddress не распознает введенный адрес из-за опечатки. Отсутствие "s" в "Ливингстоне" драматично, потому что есть улицы с именем "Ливингтон", оставляя запрос неоднозначным, и результаты были слишком неправильными, чтобы вернуться в соответствии со спецификациями CASS™. Изменение названия с разных опечатка, "Livingstn", однако, произвела действительный результат, что опечатка Номинатим тоже не принял:
... по какой-то причине я должен вырваться из своих пулевых точек для правильного отображения кода:
[
{
"input_index": 0,
"candidate_index": 0,
"delivery_line_1": "182 Livingston Ave",
"last_line": "Albany NY 12210-2512",
"delivery_point_barcode": "122102512824",
"components": {
"primary_number": "182",
"street_name": "Livingston",
"street_suffix": "Ave",
"city_name": "Albany",
"state_abbreviation": "NY",
"zipcode": "12210",
"plus4_code": "2512",
"delivery_point": "82",
"delivery_point_check_digit": "4"
},
"metadata": {
"record_type": "S",
"county_fips": "36001",
"county_name": "Albany",
"carrier_route": "C011",
"congressional_district": "21",
"rdi": "Residential",
"latitude": 42.66033,
"longitude": -73.75285,
"precision": "Zip9"
},
"analysis": {
"dpv_match_code": "Y",
"dpv_footnotes": "AABB",
"dpv_cmra": "N",
"dpv_vacant": "N",
"active": "Y",
"ews_match": false,
"footnotes": "M#"
}
}
]
в аналитической сноске "m#" указано, что совпадение было достигнуто путем фиксации орфографии названия улицы. Полученные сноски DPV" AABB " указывают на то, что весь адрес соответствовал улице + городу/штату в Национальном файле ZIP+4. Также обратите внимание, что точность Zip9, которая является наиболее точным уровнем геокодирования (в настоящее время) - точный, чтобы заблокировать (или ближе) уровень.
Так, в ответ на ваши вопросы:
что зависит. Ваши клиенты вводят адрес в форме веб-сайта? Скажите им сразу же, прежде чем они продолжат, что адрес недействителен.
мы работаем над плагином jQuery, чтобы сделать этот вырезать и вставить легко для всех, но до тех пор, вы можете увидеть нашу концепцию в нашей форме проверки, которая реализует довольно гладкую систему:SmartyStreets имеет плагин jQuery, который проверяет адреса на формах веб-сайта (просто скопируйте и вставьте). При вводе адреса он автоматически проверяется. Если это неправильно, они скользят вверх уведомление с просьбой пользователя, если они хотели бы исправить это. Иногда их адрес неоднозначен, где он возвращает несколько действительных результатов. (Попробуйте: "100, Нью-Йорк, Нью-Йорк") - они показывают несколько предложений и вы можете выбрать один. Вы исправляете это, и форма не отправляется, пока пользователь не получит действительный адрес или не скажет: "используйте мой; я гарантия это право."Или, если адрес правильный, они помещают стандартизированные результаты в поля адреса и отображают зеленое уведомление: "адрес проверен!"Я думаю, что я обсуждал это выше. Ваш запрос будет хорошо; это, кажется, недостаток в Nominatim.
как было предложено, вы можете попробовать LiveAddress. Попробуйте это с большим набором ваших адресов, чтобы получить лучшую идею (сравнение только с одним адресом, я признаю, слабый признак) - но пока кажется, что для ваших нужд LiveAddress находится где-то между Google Maps и Nominatim.
ответ на вопрос в комментарии
Я выбежал из комнаты в комментариях.
Q:
вот еще один адрес, вызывающий у нас проблемы "7580 E Big Cannon Drive, Anaheim Hills, Anaheim Hills, California, 92808, US "даже" 7580 E Big Cannon Drive, California, 92808, US", похоже, не работал с вашим сайт.
A:
Я сделал некоторые исследования на сайте USPS и некоторых других поставщиков услуг, а также. Ни один из них не дал никаких достоверных результатов или предложений. Но я узнал, в чем проблема с адресом, как вы его представили:
Mispelled название улицы. нет biggie; LiveAddress исправил это на большой Cany on.
плохой основной номер. там не так много надежда здесь, если первичное число неверно. Как правило, компьютер или человек не могут понять, что вы на самом деле имели в виду. В этих случаях адрес не будет проверен, и пользователь должен предоставить что-то действительно, чтобы продолжить. Я нашел действительный основной номер на 7584.
мастер-запланированное сообщество, а не город/округ. "Anaheim Hills" -это название Мастер-запланированного сообщества. Google нашел ее в своей компании, но это не имеет ничего общего с адресом.
"Анахайм Хиллс" дважды. это сбивает с толку парсер. К сожалению, с дополнительной ненужной информации (особенно. в однострочном адресе), почти невозможно сказать, какая часть его сомнительна. Второй "Анахайм" должен уйти, но первый может остаться, и все будет хорошо.
информация о стране. большинство услуг, которые я пробовал ваш адрес на запутался со страной впереди и поместите ее в поле" Название компании/фирмы". Мы имеем дело с адресами США, поэтому вы можете опустить страну. Это также уменьшит размер вашего запроса.
LiveAddress фактически смог проверить адрес в этих формах, как однострочный адрес, так и разбитый на компоненты:
7584 E Big Cannon Drive anaheim hills ca 92808
7584 bg cannon 92808
7584 big cannon ave aneheim hills ca
наиболее существенной помощью было найти действительное первичное число. В случае, если никакие действительные адреса не возвращаются, вы должны предупредить пользователя и предложите зафиксировать основной номер и убедиться, что город/штат (если задан) совпадает с почтовым индексом (потому что, если эти двое сражаются, также невозможно сказать, что вы имели в виду).