2012-03-27 39 views
16

我最近被一家地理信息系統公司聘請重寫他們的舊地理數據庫。所以我現在正在尋找一個好的計算幾何庫。我見過CGAL,這很棒,但是我的老闆想要一些免費的東西。是Boost.Geometry成熟了嗎?

所以我現在檢查Boost.Geometry。這個圖書館看起來不錯,但它似乎也在變化很快。很多事情還沒有實現,並且在郵件列表上討論了很多問題。

因此我的問題是:Boost.Geometry已經足夠成熟,所以我可以在它上面構建一些東西?或者設計仍在發展?

感謝

+0

我認爲*設計*這是相當穩定的,當庫升壓得到接受。這不正確嗎? – CapelliC 2012-03-27 15:07:23

+0

@chac是的,你可能會這麼認爲。但從我看到的這個庫的作者看來,事情可能會更好。至少這是我的理解,也許我錯了。這就是爲什麼我問這個問題。 – undu 2012-03-27 15:37:04

+0

在'免費'你的意思是'免費的,如在啤酒'? CGAL是GPL,因此在自由方面非常「自由」;) – pmr 2012-03-29 13:58:41

回答

11

根據您的需求,你可以看看GEOS,用於通過PostGIS的其幾何操作,等等,而且比的boost ::幾何更加成熟。然而,它很難延伸,如果你想要支持的不僅僅是簡單功能,你將不得不自己去做。

在我看來,boost :: geometry能夠適應現有(遺留)庫的能力,這意味着您應該能夠保留一些您的僱主的數據結構(或任何其他現有的幾何庫) ,並用boost :: geometry來構建它們。

的boost ::幾何是獲得成熟和擴展功能相當快,但我並不想太多,因爲去年的設計已經改變(當它被接納進入升壓)。我會在郵件列表上詢問 - 作者非常積極和樂於助人。

+0

感謝您的澄清。我見過GEOS,正如你所說,看起來很難延伸。但我會看看我能做什麼:) – undu 2012-03-29 14:54:21

+1

如果想要使用boost :: geometry支持現有(遺留)幾何庫的功能,讀取/寫入WKT字符串或r-tree索引,可以將遺留對象調整爲boost :: geometry,而不需要創建中間對象(這正是您與其他庫(如GEOS)必須執行的操作,以及這花費了大量的內存,並可能是CPU)。如果你不受傳統物體的束縛,這並不是什麼大問題。 – meastp 2012-03-30 10:14:08

0

這取決於您的需求。

Boost是最高效,高性能和成熟的C++庫之一,但是當談到幾何時,geos是最好的,我在三維數據優化項目中嘗試了兩種方法。

升壓幾何優點: -Performant -Well設計API

GEOS優點: -Accurate -Mature