平时用过jts,但用到的只是局部功能,停留在简单使用阶段,对jts没有一个全面系统的认识,遇到问题不知道如何通过jts解决,这里通过jts做下简单梳理,希望以后遇到gis问题能借助jts来解决掉,避免重复造车。
jts是围绕几何图形以及几何图形之间的算法、数据结构展开的,我们从几何图形数据结构算法以及常用操作来切入代码。
关键组件:
Geometry
所有几何图形的抽象,且方法都是线程安全的。
通常Geometry都会包含一个Envelope,这个Envelope恰好包含图形的所有点。
如何构造
- WKTReader:用于将wkt转化为jts支持的Geometry,需要注意的是非线程安全。
- GeometryFactory:也可以通过GeometryFactory来创建Geometry.
1 2 3 4 5 6 | // WKTReader Geometry gmt = new WKTReader().read("LINESTRING (0 0, 10 10, 20 20)"); // GeometryFactory GeometryFactory fact = new GeometryFactory(); Point p1 = fact.createPoint(new Coordinate(0,0)); |
常用操作
Simplify
jts实现简化图形的算法。
- DouglasPeuckerSimplifier
- TopologyPreservingSimplifier