平时用过jts,但用到的只是局部功能,停留在简单使用阶段,对jts没有一个全面系统的认识,遇到问题不知道如何通过jts解决,这里通过jts做下简单梳理,希望以后遇到gis问题能借助jts来解决掉,避免重复造车。

jts是围绕几何图形以及几何图形之间的算法、数据结构展开的,我们从几何图形数据结构算法以及常用操作来切入代码。

关键组件:

Geometry

所有几何图形的抽象,且方法都是线程安全的。

imageimage

通常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

Douglas–Peucker algorithm]Douglas–Peucker algorithm]