2009-07-09 6 views
5

ロケーションデータは基本的にツリー構造です。だから、あなたが住んでいるエリア/郊外、市町村、州/県、国を知りたいと思ったら、誰かに住所を尋ねるとき。位置情報をデータベースに保存する最良の方法は何ですか?

このデータは一度しか設定されておらず、 。ほとんどのEコマースサイトや他の多くの人は、この種の情報を保存する必要がありますが、私はそれについて多くを見つけるのに苦労しています。たぶん、私は適切な用語を検索していないので、私はそれがすでに解決されている共通の問題だと思った。

これは別の質問につながります。どのような地域がどの都市に属しているのか、どの都市がどの州に属しているのか、どの国家がどの国に属しているのかなど、この種の情報を手に入れることができますか?

EDIT:物事をもっと複雑にするためには、いくつかの国では郵便番号を使用していない国や郵便番号を使用している国などがあります。かなり。私の大きな願いは、地域/郊外→都市/町→地域/州/州→国を持つことです。私は不可能にしようとしているかもしれない。

EDIT2: 申し訳ありません申し訳ありませんが、私は十分明確ではないかもしれませんが、郵便番号は必要ありません。郊外/エリア名 - >市町村........

答えて

1

米国のジップを入手したい場合は、Tigerをご覧ください。それは米国国勢調査の情報であり、すべてのデータを提供します。しかし、情報は抽象化が容易ではないので、時間がかかります。

0

これは最初に表示されるよりも複雑です。いくつかの町には複数の郵便番号があります。いくつかの郵便番号には複数の町があります。多くの住所では、主要都市または最寄りの都市の名前を使用できます。アドレスの検証は簡単ではありません。

郵便番号のデータを保存したい場合は、購入できるzip code databasesがあります。しかし、おそらくUSPSに対してtheir toolを使って検証する方が簡単だと分かります。

0

郵便番号に興味がない場合は、おそらくWikipediaから必要なものを削り取ることができます。

0

まず、地理情報と政治/組織情報の2つの異なるものがあります。 郵便番号は共有できますが、地理的にはどのオブジェクトも別のオブジェクト内に完全に配置されています。

問題を解決する必要があるときは、各ジオノードが各親を参照する一般的なツリー構造を作成します。トップレベルのノード(ここでは国)には親参照がありませんでした。さらに、異なる国々には異なる構造を持っていました。唯一の要件は階層的でなければならないということです。

その後、ツリートラバーサル情報を事前に計算することで、ジオクエリを高速化できました。私たちはツリーを横断し、計算されたトラバーサルオーダーをジオノードに格納しました。その後、クエリ内の単純なint比較は、1つのジオが別のジオの内側にあるかどうかを確認するのに十分なものでした。

同時に、郵便番号情報のようなものは、ここでは並列データ構造のように見え、ジオ構造内のジオノードへの参照とともに別のテーブルに格納されます。

関連する問題