Esri geometry api java 學習文件 (1) 概述
最近整理一下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