添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

平面、线性几何操作抽象类

提供的相关方法:

1.基础方法

1.1 getLength:获取长度,线几何返回点与点之间的长度之和;闭合几何返回周长;其它返回0

1.2 getSRID:获取srid

1.3 isEmpty:判读几何是否是空,判断几何的 point.size == 0 ; 或者几何包含 empty: reader.read(“POINT EMPTY”)

1.4 isRectangle:判断几何是否是Polygon

1.5 isValid:判断几何是否符合OGC SFS规格(OGC SFS specification),例如:Polygon是否自相交等

1.6 getCentroid: 获取中心点

1.7 getCoordinates:获取coordinate数据

1.8 getEnvelope:获取边界

1.9 toText:返回WKT格式数据

2.查询比较方法:

2.1 equals(Geometry g): 判断两个几何是否相等,不用于GeometryCollection,图引用来自sfs标准

在这里插入图片描述


2.2 disjoint(Geometry g): 判断几何是否是不相交(脱节)的

在这里插入图片描述


2.3 intersects(Geometry g): 判断几何是否相交:

在这里插入图片描述


2.4 touches(Geometry g): 判断几何是否接触:

在这里插入图片描述


2.5 crosses(Geometry g): 判断几何是否交叉:

在这里插入图片描述


2.6 within(Geometry g): 判断当前几何是否在指定的几何内部:

在这里插入图片描述


2.7 contains(Geometry g): 判断当前几何包含g几何:

在这里插入图片描述


2.8 overlaps(Geometry g): 判断当前几何与参数g几何是否部分重叠:

在这里插入图片描述


2.9 relate(Geometry g, String intersectionPattern): 判断当前几何与参数几何是否符合输入的 DE-9IM(例如:intersectionPattern=0*01T12F2)

2.10 covers(Geometry g): 判断当前几何是否覆盖参数g几何:例如黄色的几何覆盖内层几何

在这里插入图片描述


2.11 coveredBy(Geometry g): 判断当前几何是否被参数g几何掩盖:例如内层几何被外层黄色几何掩盖

在这里插入图片描述


3.计算方法:

3.1 intersection(Geometry other): 返回当前几何与输入几何相交的几何数据

在这里插入图片描述


3.2 difference(Geometry other): 计算差异几何,差异分析,返回other与当前几何不同的几何数据

在这里插入图片描述


3.3 union(Geometry other): 合并几何

在这里插入图片描述


3.4 symDifference(Geometry other): 对称差异分析,排除一样(重叠)的几何,将当前与other不一样的几何合集返回

在这里插入图片描述


3.5 buffer(double distance): 加buffer

在这里插入图片描述


3.6 buffer(double distance, int quadrantSegments): 加buffer,边界样式

在这里插入图片描述


3.7 convexHull(): 凸包分析,返回当前的几何的覆盖面

在这里插入图片描述


在这里插入图片描述

GeometryCollection, LineString, Point, Polygon

import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.PrecisionModel;
import org.locationtech.jts.geom.impl.PackedCoordinateSequenceFactory;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKTReader;
import java.io.*;
public class GeometryTest {
    public static void main(String[] args) throws FileNotFoundException, ParseException {
        PrecisionModel precisionModel = new PrecisionModel();
        GeometryFactory geometryFactory = new GeometryFactory(precisionModel, 0 ,PackedCoordinateSequenceFactory.DOUBLE_FACTORY);
        //通过geometryFactory 或者 Geometry子类创建 Geometry 实例
        //通过wktReader读取飞机形状wkt数据 (见图一)
        WKTReader wktReader = new WKTReader(geometryFactory);
        InputStream is = GeometryTest.class.getResourceAsStream("/wkt/plane.wkt");
        Geometry geometry = wktReader.read(new InputStreamReader(is));
        System.out.printf("WKT几何形状%s \r\n",geometry.toText());
        //Geometry常用方法示例 (见图一) 红色框代表边界
        Geometry envelopeGeo =  geometry.getEnvelope();
        System.out.printf("WKT边界 geometry.getEnvelope %s", envelopeGeo.toText());
操作示例截图(图一)
一:概述点、线、面 地理信息系统(GIS)是一种技术,它允许用户捕捉、存储、分析和显示地理空间数据。GeoTools 是一个开源的 Java 程序库,提供了一套丰富的工具来处理地理空间数据。本文将探讨如何使用 GeoTools 构建地理空间数据的基本元素:点、线和面。我们将通过不同的方法实现这些元素,并提供实际的案例。 ... org.locationtech.jts.geom.TopologyException: found non-noded intersection between JAVA使用JTS 判断坐标点是否在坐标多边形内部思路Geometry之间的关系API及参考博客代码依赖工具类测试类 判断坐标点是否在坐标多边形内部,首先不能直接计算坐标点,是需要字符串坐标点转化为地理空间数据Geometry,然后使用JTS包中提供得API判断Geometry几何图形的关系 Geometry之间的关系 相等(Equals):几何形状拓扑上相等。 脱节(Disjoint):几何形状没有共有的点。 相交(Intersects):几何形状至少有一个共有点(区别于脱节) 接触(Touch jts-io-common - I/O classes for open spatial formats geom - geom基础包 geom.prep - 对适当准备的几何图形执行优化的几何操作类 edgegraph - 边与图 index - 空间索引 IO - 各类外部格式输入输出工具包,GML、KML、WKB、WKT等 各包使用说明 1.org.locationtech.jts.g 用于存储二维笛卡尔(2-dimensional Cartesian plane)坐标的轻量级类: 1.提供基础存储X,Y,Z的set get方法 2.提供计算坐标与坐标点的相关计算方法distance,compare,equals等 CoordinateXY, CoordinateXYM二维带M, CoordinateXYZM三维度代M java.lang.NoSuchMethodError: org.locationtech.jts.geom.Polygon.getExteriorRing()Lorg/locationtech/jts/geom/LineString; 然后一通好找,发现是依赖包的版本问题,用这两个版本,就好了:geotools:21.0 JTS: compile group: 'org.locationtech.jts... 最近在研究利用geotool制作专题图的功能。其实geotool是包含JTS库的,不需要另外引入了,在pom文件中找到该依赖,删除即可解决。原因就是geotool版本和JTS版本不匹配。 当使用Jackson来序列化 org.locationtech.jts.geom.Point 对象,就会发生递归的栈溢出 GeometryFactory gf = new GeometryFactory(); Point point = gf.createPoint(new Coordinate(1.2345678, 2.3456789)); String geojson = objectMapper.writeValueAsString(point); com.fasterxml.jackson