2012-01-14 2 views
2

私は、hereのように位置認識アプリケーションを設定しています。私はGISアプリケーションについて多くのことを学んだことがあり、私が最初に提案した設定についていくつか変更することにしました。今はpostgis拡張を使ってpostgresqlデータベースを使用して幾何学的フィールドを許可し、それを埋めるためのTIGER/Lineデータ。 TIGER/Lineデータは、異なる解像度(レイヤー)で異なるデータセットを提供しているようです。州、郡、ジップ、ブロックなどのデータがあります。できるだけ細かい粒度分解能を使用して住所に投稿を関連付ける方法が必要です。PostGISを使用して場所に投稿を割り当てるよい方法

たとえば、できるだけ特定の通り(最高の解像度)に投稿を関連付けることができます。通りでなければ、特定の郵便番号(あまり具体的ではない)。郵便番号でない場合は特定の郡(具体的ではない)など。 Sidenote:私は最終的にこれらすべてを地図上に表示したいと思います。

これは私が提案するものです。

場所

id    -- int 
street_name  -- varchar -- NULL 
postal_code_id -- int  -- NULL 
county_id  -- int  -- NULL 
state_id  -- int 

郵便コード

id  -- int 
code -- varchar 
geom -- geometry 

id  -- int 
name -- varchar 
geom -- geometry 

状態テーブルが似ており、あなたが見ることができるようにように...

は、場所のテーブルには、フィールドが設定されているものは何でもにより特異性のレベルを決定します。郵便番号、郡、および州のテーブルは、外部キーによって結ばれていません(すべての場所で有効な適切な階層を判断するには複雑すぎます)。しかし、ジオメトリフィールドを使用してその関係を判断する方法があると考えています特定の郵便番号がどの州に含まれているのか、またはどの郵便番号が特定の州に属しているかを照会する)。

データベースが拡大した場合(データベースに地区やブロックのデータを含めることにします)、そのデータ用に別のテーブルを追加してから別の外部キーを追加することができますテーブル(例えば、block_id)。

誰かがこれを行うより良い方法を知っていますか?

答えて

1

通りは2つの異なる郡に属する可能性はありますか?または2つの郵便番号?私の国では、これは可能です、特に都市で。これが可能な場合、スキーマは機能しません。

私が前に言ったことにもかかわらず、私は郵便番号または郡または州にリンクすることなく街路の幾何学的形状を追加します。あなたがその情報を得ることができ、その関係を持つ別のテーブルを埋めることができます。

関連する問題