我正在設置一個位置感知應用程序,如here所述。之後我學到了更多關於GIS應用程序的知識,並決定改變一些我最初提出的設置的東西 - 我現在要使用Postgres數據庫使用postgis擴展來允許幾何字段,並使用TIGER/Line數據來填充它。 TIGER/Line數據似乎以不同的分辨率(圖層)提供不同的數據集 - 有州,縣,拉鍊,塊等數據。我需要一種方法將帖子與地址關聯起來,使用最好的顆粒分辨率。用PostGIS指定帖子到位置的好方法
例如,如果可能的話,我想將一個帖子與特定的街道(最好的分辨率)聯繫起來。如果不是街道,那麼一個特定的郵政編碼(不太具體)。如果不是郵政編碼,那麼特定的縣(不太具體)等等。旁註:我想最終在地圖上顯示這些內容。
這是我的建議:
位置
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)。
有沒有人知道更好的方法來做到這一點?