2014-02-24 7 views
1

我目前有一個postgres數據庫,其中存儲了有關照片的數據以及位置作爲JSON(使用Django)。該位置是通過GooglePlacesAPI- 獲得https://developers.google.com/places/documentation/search(搜索例如響應搜索響應)將PostgresSQL中的現有JSON字段轉換爲在PostGIS中使用

所以目前,每一張照片都有一個location列其中包含了地方的JSON信息從GooglePlacesAPI

現在得到我想要使用Postgres的空間功能來根據位置進行查詢,但我不知道如何去做,以及需要什麼模式更改。 Postgres的文檔似乎表明,將會有一個新的表格,包括位置名稱,lat,lng和其他信息。那麼這是否意味着每個位置都將保存在不同的表格中,並且會有一個引用該外鍵的外鍵? 那麼JSON需要基本上扁平化才能存儲在表中?

如果是這樣,是否有一個推薦的表格格式,這將是很好的存儲位置,以便我可以得到任何其他位置數據(比如來自Foursquare,FB等)並將其轉換爲表格格式之前存儲。

回答

0

幾何不是特別的:它只是另一種數據類型。因此,將幾何列添加到現有的表中。假設你已經安裝並啓用了PostGIS 2.X:

ALTER TABLE mytable ADD COLUMN geom geometry(Point,4326); 

然後通過提取出來的數據location JSON柱填充幾何數據(這真的取決於數據如何非晶柱內結構):

UPDATE mytable SET 
    geom = ST_SetSRID(ST_MakePoint((location->>'lng')::numeric, 
           (location->>'lat')::numeric), 4326) 

而這應該是一個開始。後面的步驟將是構建GiST索引並使用其他表或興趣點進行空間查詢。您可能還需要考慮數據類型geography,而不是數據類型geometry,具體取決於您的需要。

相關問題