3

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

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

 
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

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

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

Спасибо!

ответ

3

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

Вход:

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.

EDIT: Добавлена ​​широта/долгота поле (недавно выпустил)

+1

I'v уже интегрирован Smarty-Streets в мой алгоритм адрес проверки. Возможно, я даже разговаривал с вами по телефону - отличная поддержка по телефону, кстати! Я проверил несколько других сервисов, и ваш синтаксический анализатор - лучшее, с чем я столкнулся. Проблема, которая у меня есть с Smarty-Streets, заключается в том, что она не возвращает долготы и широты, поэтому, если я что-то вернусь с улиц умных, мне нужно вернуться и попытаться получить долготу и широту откуда-то еще. –

+0

Понял. Жаль, что я тебя не узнал! :) Настройтесь на lat/lon в какой-то момент - это, надеюсь, не слишком отдаленное будущее. – mdwhatcott

+1

Обновление! Немного задержано здесь, но, как вы можете видеть: SmartyStreets теперь выполняет геокодирование (и на некоторое время). – Matt

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