郵便番号のデータベースがあることは知っていますが、それに基づいて都市/州のフィールドを取得するにはどうすればよいですか? これらのデータベースには都市/州が含まれていますか、それとも Web サービスへの何らかのルックアップを行う必要がありますか?
5 に答える
最新の郵便番号データベースには、市、州フィールドの列が含まれています。
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
米国郵政公社のHTTP/XML APIの使用
XML ベースの Web API を文書化した米国郵政公社の Web サイトのこのページ、具体的にはこの PDF ドキュメントのセクション 4.0 (22 ページ) によると、5 桁の郵便番号を含む XML 要求を送信できる URL があり、対応する都市と州を含む 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>
API を使用する前にUSPSに登録する必要がありますが、私が知る限り、アクセスに料金はかかりません。ちなみに、彼らの API には他にもいくつかの機能があります。住所の標準化や郵便番号の検索、追跡、配送、ラベルなどのスイート全体を実行できます。
「入力する必要があります...」ではなく、「どのように入力する必要があります...」という質問に答えようとします。
これを複数回行うと仮定すると、独自のデータベースを構築する必要があります。これは、多くのソースのいずれかからダウンロードしたテキスト ファイルにすぎない可能性があります (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 ですべてを行うことになります。あなたのアプリケーションの詳細は、より詳細な回答を引き出すかもしれません.