2

我正在设置一个位置感知应用程序,如此所述。从那以后,我学到了更多关于 GIS 应用程序的知识,并决定更改我最初提出的设置的一些内容——我现在将使用 postgresql 数据库,使用 postgis 扩展来允许几何字段,并使用TIGER/Line 数据来填充它。TIGER/Line 数据似乎以不同的分辨率(层)提供了不同的数据集——有州、县、邮编、街区等的数据。我需要一种方法来使用最精细的粒度分辨率将帖子与地址相关联.

例如,如果可能,我想将帖子与特定街道相关联(最高分辨率)。如果不是街道,则为特定的邮政编码(不太具体)。如果不是邮政编码,则为特定县(不太具体),依此类推。旁注:我想最终将这些都显示在地图上。

这就是我的建议:

地点

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

状态表是类似的,等等......

如您所见,位置表将通过设置的任何字段来决定特异性级别。邮政编码、县和州表没有通过外键绑定在一起(太复杂,无法确定在任何地方都有效的适当层次结构),但是,我相信有一种方法可以使用几何字段来确定它们的关系(例如,查询某个邮政编码包含在哪个州或哪个邮政编码属于某个州)。

我认为这是一个很好的设置,因为如果数据库增长(假设我决定在数据库中包含地区或街区的数据),那么我可以为该数据添加另一个表,然后将另一个外键添加到位置表(例如,块ID)。

有人知道更好的方法吗?

4

1 回答 1

1

一条街道是否可能属于两个不同的县?还是两个邮政编码?,在我的国家这是可能的,特别是在城市。如果这是可能的,那么您的架构将无法正常工作。

尽管我之前说过,我会添加街道的几何图形(打开街道地图)而不将其链接到邮政编码或县甚至州,然后使用一个简单的查询将街道的几何图形与另一个相交表,您可以获得该信息,并填写另一个具有该关系的表。

于 2012-01-17T15:52:12.830 回答