最近整理一下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