最近整理一下JAVA開發使用到的工具,包括OGC標准、JTS、GeoTools、Esri 和 GDAL。
因為正好在學習Esri 的 geometry api java,所以就從它開始吧~
一、geometry api java 可以做什么?
二者關系判斷
Contains 可以判斷兩個幾何體A是否包含B (點-線、點-面、線-線、線-面、面-面)
Crosses 可以判斷兩個幾何體之間是否存在相交關系 (線-線、線-面)
Disjoint 可以判斷兩個幾何體之間是否不存在共有關系 (線-線、線-面、面-面)
Equals 可以判斷兩個幾何體之間是否拓撲相同 (點-點、線-線、面-面)
Intersects 可以判斷兩個幾何體之間是否存在共有關系 (線-線、線-面、面-面)
Overlaps 可以判斷兩個幾何體之間是否存在共有面積(但是不相等) (線-線、線-面、面-面)
Touches 可以判斷兩個幾何體之間是否只觸碰邊緣 (點-線、點-面、線-線、線-面、面-面)
Within 可以判斷幾何體A是否在B內(點-線、點-面、線-線、線-面、面-面)
二者對比處理
Cut 剪斷(線-線、線-面)
Difference 不同(面-面)
Intersection 共有(all)
Symmetric Difference 對稱差(沒使過不敢說)
Union 全部(all)
Distance 計算最短距離(all)
Geodesic Distance 計算某坐標系下的最短距離(all)
單獨幾何體的操作
Boundary - creates a geometry that is the boundary of a given geometry
生成外輪廓線
Buffer - creates buffer polygon around the given geometry
生成緩沖區
Clip - clips geometries with a 2-dimensional envelope
生成最小外接矩形
Densify - densifies geometries by plotting points between existing vertices
生成加密圖形
Generalize - simplifies geometries using the Douglas-Peucker algorithm
生成抽稀圖形
Offset - creates geometries that are offset from the input geometries by a given distance
平移圖形
Proximity - finds the closest point on a geometry to a given point
尋找最鄰近點
Convex Hull - creates the convex hull of a given geometry
生成凸包
Quadtree structure - can be used for spatial indexing
生成四叉樹存儲
二、geometry api java 的幾何實體(類)
自定義類
Point 點
MultiPoint 多點
Polyline 線(多線)
Polygon 面
Envelope 包絡(最小矩形)
OGC 規定的類
OGCPolygon 面
OGCMultiPolygon 多面
OGCLineString 線
OGCMultiLineString 多線
OGCPoint 點
OGCMultiPoint 多點
OGCGeometryCollection 多邊形集合
三、geometry api java 對外支持的格式
From Esri Shape, To Esri Shape
支持Esri Shape格式的文件
From REST Json, To REST Json
支持JSON格式輸入輸出(網頁)
From GeoJson, To GeoJson
支持GeoJSON格式輸入輸出
From WKT, To WKT
支持WKT格式格式輸入輸出
From WKB, To WKB
支持GeoJSON格式輸入輸出
總結:我們將通用的坐標or地理格式or互聯網格式輸入到geometry api java中,利用讀取函數轉換為內部類,再使用它存儲的算法進行分析。
得到的結果用使用輸出函數包裝成支持的格式輸出,最終得到我們需要的結果。
希望對此有興趣的朋友們發評論交流,如有錯誤也請指正。
參考:https://github.com/Esri/geometry-api-java/wiki