JTS:06 九交模型讲解

版本

org.locationtech.jts:jts-core:1.19.0
链接: github
九交模型讲解:Dimensionally Extended 9 Intersection Matrix

九交模型

九交模型,是通过矩阵来判断俩个物体的关系的,请看上面九交模型讲解

九交模型测试

  1. 测试环境
    www.geogebra.org 来生成俩个图形JTS:06 九交模型讲解_第1张图片

  2. 使用 九交模型判断关系

    多边形的维度是2,含组合多边形,带洞多边形等。
    折线的维度为1,含多线。
    点的维度为0,含多点。
    空集(无交集)维度为F。

    内部 边界 外部
    内部 F F 2
    边界 F F 1
    外部 2 1 2

    蓝图形 - 红图形 内部:内部 无点线面交集 F
    蓝图形 - 红图形 内部:边界 无点线面交集 F
    蓝图形 - 红图形 内部:外部 外部包含红图形面 为 2

    蓝图形 - 红图形 边界:内部 无点线面交集 F
    蓝图形 - 红图形 边界:边界 无点线面交集 F
    蓝图形 - 红图形 边界:外部 蓝图形边界是一条线,被红图形外部包含所以为 1

    蓝图形 - 红图形 外部:内部 包含红图形 2
    蓝图形 - 红图形 外部:边界 包含红图形边界 1
    蓝图形 - 红图形 外部:外部 俩个外部面交互 2

九交模型代码

/**
 * Geometry 九交模型
 * @author LiHan
 * 2023年9月15日 14:58:12
 */
public class GeometryMatrix {

    private GeometryFactory geometryFactory = new GeometryFactory();

    private static final Logger LOGGER = LoggerFactory.getLogger(GeometryMatrix.class);

    public static void main(String[] args) {
        GeometryMatrix geometryMatrix = new GeometryMatrix();
        geometryMatrix.strMatrix();
    }

    /**
     * 生成九交模型值
     */
    public void strMatrix() {
        Coordinate[] coordinates1 = new Coordinate[] {
                new Coordinate(1, 1),
                new Coordinate(1, 3),
                new Coordinate(4, 3),
                new Coordinate(4, 1),
                new Coordinate(1, 1)
        };
        Polygon polygon1 = geometryFactory.createPolygon(coordinates1);

        Coordinate[] coordinates2 = new Coordinate[] {
                new Coordinate(1, 4),
                new Coordinate(1, 6),
                new Coordinate(4, 6),
                new Coordinate(4, 4),
                new Coordinate(1, 4)
        };
        Polygon polygon2 = geometryFactory.createPolygon(coordinates2);
        // FF2FF1212
        LOGGER.info(polygon1.relate(polygon2).toString());
    }
  }

你可能感兴趣的:(JTS,JTS)