Google Geocode API возвращает неубедительные результаты - PullRequest
3 голосов
/ 14 февраля 2012

Для некоторых адресов, которые я пытаюсь геокодировать, Google возвращает неадекватные неубедительные результаты.

Ниже приведен пример, но это не единичный случай. Первый возвращаемый результат - это точное совпадение, однако Google помечает его как «частичное совпадение»:

Street address: 16160 Frederick Rd 
City:           Gaithersburg 
State:          MD
Zip code:       20877

Ссылка: http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=16160%20Frederick%20Rd,+Gaithersburg,+MD,+20877

Моя проблема заключается в определении правильного соответствия. В этом случае флаг «частичное совпадение» бесполезен, поскольку для всех результатов сопоставления он имеет значение «true» В этом случае я мог бы проверить на равенство по адресу, городу, штату и / или почтовому индексу, однако, если есть даже небольшая разница в написании между тем, что я отправляю в Google, и тем, что я получаю в качестве ответа, это будет тоже не работает. (Пример: «Дорога» против «Rd»).

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

Спасибо!

1 Ответ

3 голосов
/ 22 февраля 2012

Google делает замечательную работу в приближении адреса.То, что вы ищете, это проверка адреса. SmartyStreets предоставляет API проверки адреса, который является убедительным в своих результатах.Вот что API SmartyStreets возвращает для этого адреса:

Ввод:

https://api.qualifiedaddress.com/street-address/?street=16160%20Frederick%20Rd&street2=&city=gaithersburg&state=md&zipcode=20877&candidates=10&auth-token=YOUR_AUTHENTICATION_TOKEN_HERE

Вывод:

[
    {
        "input_index": 0,
        "candidate_index": 0,
        "delivery_line_1": "16160 Frederick Rd",
        "last_line": "Gaithersburg MD 20877-4011",
        "delivery_point_barcode": "208774011604",
        "components": {
            "primary_number": "16160",
            "street_name": "Frederick",
            "street_suffix": "Rd",
            "city_name": "Gaithersburg",
            "state_abbreviation": "MD",
            "zipcode": "20877",
            "plus4_code": "4011",
            "delivery_point": "60",
            "delivery_point_check_digit": "4"
        },
        "metadata": {
            "record_type": "S",
            "county_fips": "24031",
            "county_name": "Montgomery",
            "carrier_route": "C004",
            "congressional_district": "08",
            "latitude": 39.12162,
            "longitude": -77.17619,
            "precision": "Zip9"
        },
        "analysis": {
            "dpv_match_code": "Y",
            "dpv_footnotes": "AABB",
            "dpv_cmra": "N",
            "dpv_vacant": "N",
            "ews_match": false
        }
    }
]

Обратите внимание, что " dpv_match_code"- это" Y ".Это говорит USPS для подтвержденного пункта доставки - вы знаете, что это реальный адрес в тот момент.SmartyStreets использует официальные текущие данные USPS и является CASS-сертифицированным поставщиком программного обеспечения.

API является бесплатным для некоммерческих, образовательных учреждений и пользователей с низким уровнем использования.Получив результат от SmartyStreets, вы можете геокодировать его с помощью Google.Полное раскрытие: я разработчик на SmartyStreets.

РЕДАКТИРОВАТЬ: Добавлены поля широты / долготы (недавно выпущен)

...