Как заполнять поля города / штата на основе почтового индекса? - PullRequest
4 голосов
/ 17 февраля 2010

Я знаю, что есть базы данных для почтовых индексов, но как мне получить поля города / штата на основании этого? Содержат ли эти базы данных города / штаты или мне нужно выполнить какой-либо поиск в веб-сервисе?

Ответы [ 5 ]

7 голосов
/ 17 февраля 2010

\ начать {-был там сделано, что}

Важная реализация: не существует однозначного сопоставления между городами / округами и почтовыми индексами. Почтовый индекс основан не на политической зоне, а на зоне распространения, определенной для внутреннего использования USPS. Нет смысла искать город по почтовому индексу, если у вас нет +4 или полного адреса улицы, чтобы соответствовать записи в базе данных адресов USPS; в противном случае вы не узнаете, Ричмонд или Энрико, Даллас или Форт-Уэрт, просто недостаточно информации, чтобы сказать.

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

USPS обновляет свою базу данных адресов каждый месяц и стоит настоящих денег, поэтому практически любой список, который вы найдете в свободном доступе в Интернете, устареет, особенно из-за закрытия почтовых отделений USPS для экономии денег.

Один почтовый индекс может охватывать несколько географических названий, и один город часто использует несколько (но не обязательно целых) почтовых индексов. Наконец, название города, указанное в файле с почтовым индексом, может не совпадать с местом, в котором адресат фактически живет; вместо этого он представляет местоположение их почтового отделения. Письмо нашего офиса адресовано ASHLAND, но мы работаем примерно в 7 милях от реальных политических границ города. ASHLAND как раз и является тем местом, откуда берется маршрут нашего перевозчика.

Для предположения чьего-либо местоположения, например, для поиска близлежащих достопримечательностей, эти источники и наборы Город / Штат / ZIP, вероятно, хороши, они не должны быть точными. Но для проверки адреса в сценарии ввода данных? Абсолютно нет - подтвердите весь адрес или вообще не беспокойтесь.

Просто дружеское напоминание сделать шаг назад и запомнить предполагаемое использование источника данных!

\ {конец-был там сделано, что}

3 голосов
/ 17 февраля 2010

Современные базы данных почтового индекса содержат столбцы для полей Город, Штат.

http://sourceforge.net/projects/zips/

http://www.populardata.com/

1 голос
/ 16 апреля 2012

Использование Ziptastic HTTP / JSON API

Это довольно новый сервис, но, согласно его документации, все, что вам нужно сделать, это отправить запрос GET на http://ziptasticapi.com, примерно так:

GET http://ziptasticapi.com/48867

И они будут возвращать JSON объект в соответствии с:

{"country": "US", "state": "MI", "city": "OWOSSO"}

Действительно, это работает. Вы можете проверить это из командной строки, выполнив что-то вроде:

curl http://ziptasticapi.com/48867 
1 голос
/ 21 марта 2012

Использование Почтовая служба США HTTP / XML API

Согласно этой странице на веб-сайте почтовой службы США, которая документирует их веб-API на основе XML , в частности, раздел 4.0 (стр. 22) этого документа PDF , у них есть URL, где Вы можете отправить XML-запрос, содержащий 5-значный почтовый индекс, и они ответят XML-документом, содержащим соответствующий город и штат.

Согласно их документации, вот что вы отправите:

http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest>

А вот что вы получите обратно:

<?xml version="1.0"?> 
<CityStateLookupResponse> 
    <ZipCode ID="0"> 
        <Zip5>90210</Zip5> 
        <City>BEVERLY HILLS</City> 
        <State>CA</State> 
    </ZipCode> 
</CityStateLookupResponse>

USPS требует , чтобы вы зарегистрировались в них, прежде чем сможете использовать API, но, насколько я могу судить, плата за доступ не взимается. Кстати, их API имеет ряд других функций: вы можете выполнять стандартизацию адресов и поиск по почтовому индексу, а также весь набор средств отслеживания, доставки, этикеток и т. Д.

0 голосов
/ 18 февраля 2010

Я постараюсь ответить на вопрос «КАК мне заселить ...», а не «ДОЛЖЕН ли я заселить ...»

Предполагая, что вы собираетесь делать это более одного раза, вы захотите создать свою собственную базу данных. Это может быть не более чем текстовый файл, который вы скачали из любого из множества источников (см. Ответ Pentium10 здесь). Когда вам нужно название города, вы ищете ZIP и извлекаете текст города / штата. Чтобы ускорить процесс, вы должны отсортировать таблицу в числовом порядке по ZIP, построить индекс строк и использовать двоичный поиск.

Если ваша база данных ZIP выглядела так (из sourceforge ):

"zip code", "state abbreviation", "latitude", "longitude", "city", "state"
"35004", "AL", " 33.606379", " -86.50249", "Moody", "Alabama"
"35005", "AL", " 33.592585", " -86.95969", "Adamsville", "Alabama"
"35006", "AL", " 33.451714", " -87.23957", "Adger", "Alabama"

Самое простое извлечение из текста будет выглядеть примерно так:

$zipLine = lookup($ZIP);
if($zipLine) {
    $fields = explode(", ", $zipLine);
    $city  = $fields[4];
    $state = $fields[5];
}  else {
    die "$ZIP not found";
}

Если вы просто играете с текстом на PHP, это все, что вам нужно. Но если у вас есть приложение базы данных, вы будете делать все на SQL. Более подробная информация о вашем заявлении может вызвать более подробные ответы.

...