History of GEOS
GEOS中Geometry的結構
GEOS分析功能簡介
1、History of GEOS
JTS Topology Suite是Martin Davis和Dr. Mark Sondheim提出並實施的OGC簡單要素規範的Java專案。專案始於2000年秋季,JTS提供了全功能的,強大的,高效的空間操作。
在2003年PostGIS正在成為一個嚴謹實用的空間資料庫,然而它缺少一套完整的空間功能。Paul Ramsey 和Martin Davis就計劃把具體空間功能的JTS移植為C++版本,參與PostGIS的Dave Blasby提出命名為Geometry Engine (Open Source) – GEOS。
GEOS(幾何引擎 - 開源)是一個C++版本的的JTS。正因為如此,它的目標是包含JTS的完整功能C++庫。它包括所有OpenGIS Simple Features for SQL的空間謂詞的功能和空間操作,以及增強特定JTS的拓撲功能。
2、GEOS中Geometry的結構
GEOS的空間資料結構是參考OGC的Simple Features Specification for SQL(SFS)。
圖1.1 GEOS的空間資料結構
圖1.1 GEOS的空間資料結構
GEOS的空間資料型別見下圖。且資料型別全部是二維結構,例如Point中的變數僅有x,y,對於含有x,y,z的資料,也是先捨棄z,再進行賦值儲存。
圖1.2 GEOS的空間資料模型
圖1.2 GEOS的空間資料模型
3、GEOS分析功能簡介
GEOS一個重要的應用是計算幾何圖形(Geometry)之間的空間關係,它提供了多種多樣的用於處理空間關係的辦法。GEOS遵循OGC說明的維擴充套件九交集模型(the Dimensionally-Extended 9 Intersection Matrix model)。
GEOS提供了一套布林數學體系(boolean)能夠直接計算普通空間關係的空間謂詞(predicates)。
表2.1 空間關係謂詞
相等(Equals) |
幾何形狀拓撲上相等 |
脫節(Disjoint) |
幾何形狀沒有共有的點 |
相交(Intersects) |
幾何形狀至少有一個共有點(區別於脫節) |
接觸(Touches) |
幾何形狀有至少一個公共的邊界點,但是沒有內部點 |
交叉(Crosses) |
幾何形狀共享一些但不是所有的內部點 |
內含(Within) |
幾何形狀A的線都在幾何形狀B內部 |
包含(Contains) |
幾何形狀B的線都在幾何形狀A內部(區別於內含) |
重疊(Overlaps) |
幾何形狀共享一部分但不是所有的公共點,而且相交處有他們自己相同的區域 |
GEOS支援基本空間分析方法。空間分析方法需要一個或兩個幾何圖形作為引數並返回一個新的構造幾何。對空間分析介面描述如下表:
表2.2 空間分析
緩衝區分析(Buffer) |
包含所有的點在一個指定距離內的多邊形 |
凸包分析(ConvexHull) |
包含幾何形體的所有點的最小凸包多邊形(外包多邊形) |
交叉分析(Intersection) |
交叉操作就是多邊形AB中所有共同點的集合 |
聯合分析(Union) |
AB的聯合操作就是AB所有點的集合 |
差異分析(Difference) |
AB形狀的差異分析就是A裡有B裡沒有的所有點的集合 |
對稱差異分析(SymDifference) |
AB形狀的對稱差異分析就是位於A中或者B中但不同時在AB中的所有點的集合 |
距離(Distance) |
AB的距離分析是判斷AB中點的最小距離 |
參考文獻:
[1] http://tsusiatsoftware.net/jts/jts-history.html History of the JTS Topology Suite (and GEOS)
[2] JTS Topology Suite Developer’s Guide- Version 1.4
[3] OpenGIS Simple Features Specification For SQL- Revision 1.1
轉載:http://www.cnblogs.com/geospatial/p/4204589.html