2017-02-23 489 views
1

因此,我第一次做一個涉及地圖和圖層的項目,這些地圖和圖層上面有許多點和許多多邊形。POLYGON與一個MULTIPOLYGON領域的多排優點和缺點是什麼?

我傾向於爲點和多邊形創建單獨的表格,然後在它們和圖層表格之間創建多對多關係。如果我這樣做,我最終有5個表:points,polygons,layers, layers_pointslayers_polygons

但是,我看到PostGIS還提供了稱爲MULTIPOINTMULTIPOLYGON的類型。如果我使用這些類型,那麼我可以把它放在layers表中。我想這會讓查詢更快,因爲我需要更少的連接。但是,我不確定後來我可能會後悔,如果這意味着與單個點和多邊形一起工作變得不可能。我甚至不確定是否有必要對各個點和多邊形進行計算,但是很好地知道這兩種方法是否可行。

所以基本上我在問,這些不同方法的優缺點是什麼?

+2

嘗試在http://gis.stackexchange.com/上交叉發佈,您將獲得更多GIS專家視圖。 –

+0

我沒有答案,但需要考慮:每個幾何列都需要一個指定的幾何類型。你不能在這個欄內混合搭配。 Multipoint和Multipolygon是幾何類型,允許在單個記錄中存在多個特徵(ArcMap也具有這些特徵類型)。爲了使用「圖層」表格,您需要爲每個要包含的幾何類型設置一個列。 –

+0

@MichaelMarkieta限制適用於Postgis 1.x.版本2.x沒有這樣的限制。您可以通過檢查強制執行幾何類型,但它完全是可選的 – amenadiel

回答

3

通常,您會考慮使用多面體來表示具有不相交曲面的實體(例如,阿拉斯加的幾何圖形)或其他不能表示爲多邊形的拓撲。這裏的關鍵是,一個單一的實體,需要用多面表示

不會做什麼是組無關多邊形成多面,因爲你將不能夠在孩子執行查詢多邊形級別,除非將環提取到另一個幾何體中。如果多邊形不相關,則可能需要單獨查詢它們。即使它們共享一個圖層,您也可以在不合並它們的情況下管理與業務邏輯的關係,因爲它們不代表同一實體。

請記住,前端中的幾何工具不會必須將多面體視爲有效的幾何體或多個對象。當檢查一個點是否包含在一個多面體中時,看起來像你的用例的多邊形中的點的算法不是必不可少的工作。

像Wicket.js這樣的工具(從/到WKT/geojson /本地對象轉換)不支持多面體。 Google maps api v3不支持除數據層以外的多面體(但不能像在多邊形功能上那樣在數據層上操作)。 Turf.js的操作可以在包含多個多邊形的Featurecollection上運行,但不會在多面體上運行。

不知道你確切的用例,這是我能告訴你的最好的,並且TL/DR:保持你的多邊形,因爲它們是

相關問題