JTS Java空间几何计算、距离、最近点,看完你还觉得算法不重要

Point point = (Point) reader.read(“POINT (109.013388 32.715519)”);

多点-MultiPoint

WKTReader reader = new WKTReader( geometryFactory );

MultiPoint mpoint = (MultiPoint) reader.read(“MULTIPOINT(109.013388 32.715519,119.32488 31.435678)”);

线-LineString

Coordinate[] coords = new Coordinate[] {new Coordinate(2, 2), new Coordinate(2, 2)};

LineString line = geometryFactory.createLineString(coords);

// wkt

WKTReader reader = new WKTReader( geometryFactory );

LineString line = (LineString) reader.read(“LINESTRING(0 0, 2 0)”);

多线-MultiLineString

Coordinate[] coords1 = new Coordinate[] {new Coordinate(2, 2), new Coordinate(2, 2)};

LineString line1 = geometryFactory.createLineString(coords1);

Coordinate[] coords2 = new Coordinate[] {new Coordinate(2, 2), new Coordinate(2, 2)};

LineString line2 = geometryFactory.createLineString(coords2);

LineString[] lineStrings = new LineString[2];

lineStrings[0]= line1;

lineStrings[1] = line2;

MultiLineString ms = geometryFactory.createMultiLineString(lineStrings);

// wkt

WKTReader reader = new WKTReader( geometryFactory );

MultiLineString line = (MultiLineString) reader.read(“MULTILINESTRING((0 0, 2 0),(1 1,2 2))”);

闭合线-LinearRing

LinearRing lr = new GeometryFactory().createLinearRing(new Coordinate[]{new Coordinate(0, 0), new Coordinate(0, 10), new Coordinate(10, 10), new Coordinate(10, 0), new Coordinate(0, 0)});

多边形-Polygon

WKTReader reader = new WKTReader( geometryFactory );

Polygon polygon = (Polygon) reader.read(“POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))”);

多个多边形-MultiPolygon

WKTReader reader = new WKTReader( geometryFactory );

MultiPolygon mpolygon = (MultiPolygon) reader.read(“MULTIPOLYGON(((40 10, 30 0, 40 10, 30 20, 40 10),(30 10, 30 0, 40 10, 30 20, 30 10)))”);

几何集合列表-GeometryCollection

LineString line = createLine();

Polygon poly = createPolygonByWKT();

Geometry g1 = geometryFactory.createGeometry(line);

Geometry g2 = geometryFactory.createGeometry(poly);

Geometry[] garray = new Geometry[]{g1,g2};

GeometryCollection gc = geometryFactory.createGeometryCollection(garray);

几何关系判断(返回值 boolean)


| 关系 | 解释 |

| — | — |

| 相等(Equals): | 几何形状拓扑上相等。 |

| 不相交(Disjoint): | 几何形状没有共有的点。 |

| 相交(Intersects): | 几何形状至少有一个共有点(区别于脱节) |

| 接触(Touches): | 几何形状有至少一个公共的边界点,但是没有内部点。 |

| 交叉(Crosses): | 几何形状共享一些但不是所有的内部点。 |

| 内含(Within): | 几何形状A的线都在几何形状B内部。 |

| 包含(Contains): | 几何形状B的线都在几何形状A内部(区别于内含) |

| 重叠(Overlaps): | 几何形状共享一部分但不是所有的公共点,而且