Проблемы геокодирования с 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, которая является наиболее точным уровнем геокодирования (в настоящее время) - точный, чтобы заблокировать (или ближе) уровень.

Так, в ответ на ваши вопросы:

  1. что зависит. Ваши клиенты вводят адрес в форме веб-сайта? Скажите им сразу же, прежде чем они продолжат, что адрес недействителен. мы работаем над плагином jQuery, чтобы сделать этот вырезать и вставить легко для всех, но до тех пор, вы можете увидеть нашу концепцию в нашей форме проверки, которая реализует довольно гладкую систему: SmartyStreets имеет плагин jQuery, который проверяет адреса на формах веб-сайта (просто скопируйте и вставьте). При вводе адреса он автоматически проверяется. Если это неправильно, они скользят вверх уведомление с просьбой пользователя, если они хотели бы исправить это. Иногда их адрес неоднозначен, где он возвращает несколько действительных результатов. (Попробуйте: "100, Нью-Йорк, Нью-Йорк") - они показывают несколько предложений и вы можете выбрать один. Вы исправляете это, и форма не отправляется, пока пользователь не получит действительный адрес или не скажет: "используйте мой; я гарантия это право."Или, если адрес правильный, они помещают стандартизированные результаты в поля адреса и отображают зеленое уведомление: "адрес проверен!"

  2. Я думаю, что я обсуждал это выше. Ваш запрос будет хорошо; это, кажется, недостаток в Nominatim.

  3. как было предложено, вы можете попробовать 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

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