10

顧客が入力した住所の緯度と経度を取得する必要がある Web サイトがあります。

Google/Bing/Yahoo は私たちには高すぎるので、OpenStreetMap/Nomintim を選びました。

残念ながら、テスト中は問題なく動作しましたが、入力されたアドレスの約 50% を見つけることができず、これは大きな問題です。

私が知りたいと思っていることは3つあります。

  1. 顧客が実際に間違った住所を入力した場合に対処する最善の方法は何ですか? メールを送信して修正するよう依頼してください。何かが見つかるまでアドレスのセグメントを使用しますか?

  2. 住所は問題ないのに OpenStreetMap で見つけられないという状況を処理する最善の方法は何ですか? それとも、Nomintim へのクエリに何か問題がありますか?

  3. OpenStreetMap が機能しない場合、無料/安価な代替手段を知っている人はいますか? オープンソースのコラボレーションであるため、完全ではないことはわかっていますが、カバレッジはかなり良好で、正確な場所がない場合は近くの場所を返すと思いました-おそらくそうで、私はそれを使用しています違う。

次に例を示します。

182 リビングトン アベニュー、アルバニー、ニューヨーク、12210、米国

Googleマップはそれを簡単に見つけます。Nominatim は何も見つかりません: http://nominatim.openstreetmap.org/search?format=xml&addressdetails=0&q=182%20livington%20ave,albany,New%20York,12210,US

4

1 に答える 1

17

あなたが探しているのは住所確認だと思います。Google、Nominatim などは、住所が不明な場合に住所を見つけるのに適した住所近似のみを実行しますが、結果は最良の推測にすぎません。

私は、LiveAddress と呼ばれる厳しい CASS™ 要件に従って住所を検証およびジオコーディングする API の開発を支援しました。サンプル アドレスを Google、Nomintim、LiveAddress API で実行した結果は次のとおりです。

  • Google は「Livingston」のタイプミスにもかかわらず住所を見つけましたが、「住所はおおよそのものです」として、その有効性を保証できませんでした。-- 繰り返しになりますが、試行するほぼすべてのアドレスについてそれが示されています。

  • タイプミスのため、Nomintim はそれを見つけられません。Nominatim を使用することのおそらく欠点は、タイプミスの修正、アドレスの正確性または完全性の検証などを試みないことです。タイプミスを修正すると、いくつかの情報が返されましたが、何を修正する必要があるか、クエリが失敗した理由は誰にもわかりませんでした。とりあえず。

  • タイプミスのため、LiveAddress は入力されたアドレスを認識しません。「Livingston」に「s」がないのは劇的です。「Livington」という名前の通りがあり、クエリがあいまいであり、CASS™ 仕様に従って返される結果があまりにも不一致であったためです。ただし、別のタイプミス「Livingstn」で名前を変更すると、有効な結果が生成されましたが、Nominatim はどちらのタイプミスも受け入れませんでした。

...何らかの理由で、コードが適切にレンダリングされるように箇条書きから抜け出さなければなりません。

[
    {
        "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. 場合によります。顧客は Web サイトのフォームに住所を入力していますか? 続行する前に、住所が無効であることをすぐに伝えてください。このカット アンド ペーストを誰でも簡単に行えるように、jQuery プラグインの開発に取り組んでいますが、それまでは、非常に洗練されたシステムを実装するチェックアウト フォームでコンセプトを確認できます。SmartyStreets には、ウェブサイトのアドレスを検証する jQuery プラグインがあります。フォーム(コピーして貼り付けるだけです)。アドレスを入力すると、自動的に検証されます。間違っている場合は、ユーザーに修正するかどうかを尋ねる通知をスライドさせます。アドレスがあいまいな場合があり、いくつかの有効な結果が返されます。(試してみてください:「100、ニューヨーク、ニューヨーク」)—いくつかの提案が表示され、1つを選択できます. それを修正すると、ユーザーが有効なアドレスを取得するか、「とにかく私のものを使用してください。それが正しいことを保証します」と言うまで、フォームは送信されません。または、住所が正しい場合は、標準化された結果を住所フィールドに入力し、「住所が確認されました!」という緑色の通知を表示します。

  2. これについては上記で説明したと思います。クエリは問題ありません。ノミナティムの欠点のようです。

  3. 提案されているように、LiveAddress を試すことができます。より良いアイデアを得るために、多数の住所で試してみてください (1 つの住所だけを比較するのは、弱い指標であることは認めます) — しかし、これまでのところ、LiveAddress は Google マップと Google マップの中間のように思えます。指名。


コメントでの質問への回答

コメントのスペースが足りなくなりました。

Q:

「7580 E Big Cannon Drive,Anaheim Hills,Anaheim Hills,California,92808,US」という別のアドレスが原因で、「7580 E Big Cannon Drive,California,92808,US」でもサイトで機能しないようです。

A:

USPS のサイトや他のサービス プロバイダーについても調査しました。有効な結果や提案を返すものはありませんでした。しかし、あなたが送信した住所の問題点がわかりました。

  • 通り名のスペルが間違っています。大したことはありません。LiveAddress はこれを Big Can y on に修正しました。

  • プライマリ番号が正しくありません。 最初の番号が正しくない場合、ここではあまり望みがありません。一般に、コンピューターや人間が、あなたの本当の意味を推測する方法はありません。このような場合、アドレスは検証に失敗し、ユーザーは続行するために有効なものを提供する必要があります。7584 で有効なプライマリ番号を見つけました。

  • 都市/郡ではなく、基本計画されたコミュニティ。「アナハイム ヒルズ」は、マスター プラン コミュニティの名前です。Google はビジネス リスティングでそれを見つけましたが、それは住所とは何の関係もありません。

  • 「アナハイムヒルズ」2回。パーサーを混乱させています。残念ながら、余分な不要な情報 (特に 1 行の住所) があると、そのどの部分が疑わしいかを判断することはほとんど不可能です。その 2 番目の「アナハイム ヒルズ」は去らなければなりませんが、最初の「アナハイム ヒルズ」はそのままで問題ありません。

  • 国情報。私があなたの住所を試したサービスのほとんどは、前の国と混同され、「会社/会社名」フィールドに入力されました. 米国の住所を扱うため、国は省略できます。リクエストのサイズも小さくなります。

LiveAddress は実際に、単一行の住所とコンポーネントに分割された住所の両方で、次の形式で住所を確認できました。

7584 E Big Cannon Drive anaheim hills ca 92808
7584 bg cannon 92808
7584 big cannon ave aneheim hills ca

最も重要な助けとなったのは、有効なプライマリ番号を見つけることでした。有効なアドレスが返されない場合は、ユーザーに警告し、プライマリ番号を修正し、市/州 (指定されている場合) が郵便番号と一致していることを確認することを提案する必要があります (これら 2 つが競合している場合は、あなたが何を意味したか教えてください)。

于 2012-07-10T00:41:39.540 に答える