JTS:10 Crosses

news2024/11/19 0:44:56

这里写目录标题

      • 版本
        • 点与线
        • 点与面
        • 线与面
        • 线与线

版本

org.locationtech.jts:jts-core:1.19.0
链接: github

public class GeometryCrosses {

    private final GeometryFactory geometryFactory = new GeometryFactory();

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

    private static final WKTWriter WKT_WRITER = new WKTWriter();

    private Coordinate[] coordinate1;

    private Coordinate[] coordinate2;

    /**
     * [T*T******] (for P/L, P/A, and L/A situations) 点与线,点与面,线与面
     * [T*****T**] (for L/P, A/P, and A/L situations) 线与点,面与点,面与线
     * [0********] (for L/L situations) 线与线
     * 获取两个几何对象并返回 true 如果它们的交叉点在空间上是交叉的,
     * 也就是说,几何图形有一些但不是所有的内部点是共同的。
     * 几何图形内部的交点不能是空集,并且其维度必须小于两个输入几何图形的最大尺寸。
     * 此外,两个几何图形的交点不能等于任何一个源几何图形。否则,它将返回 false
     */
    public static void main(String[] args) {
        GeometryCrosses geometryCrosses = new GeometryCrosses();
        geometryCrosses.test00();
    }
}
点与线

在这里插入图片描述

    /**
     * 点与线, 点必须是多点,且有一个点在线上,因为是交叉点,在线上
     * [T*T******]
     */
    public void test00() {
        coordinate1 = new Coordinate[] {
                new Coordinate(4, 3), new Coordinate(13, 3)
        };

        LineString lineString = geometryFactory.createLineString(coordinate1);

        coordinate2 = new Coordinate[] {
                new Coordinate(8, 6), new Coordinate(8, 1), new Coordinate(9, 3)
        };

        MultiPoint multiPoint = geometryFactory.createMultiPointFromCoords(coordinate2);

        LOGGER.info("lineString1 - point1 九交模型值:{}", lineString.relate(multiPoint).toString());
        LOGGER.info("point1 - lineString1 跨越:{}", lineString.crosses(multiPoint));
        LOGGER.info("lineString1: {}, point1: {}", WKT_WRITER.write(lineString), WKT_WRITER.write(multiPoint));
    }
点与面

在这里插入图片描述

    /**
     * 点与面
     * [T*T******]
     */
    public void test01() {
        coordinate1 = new Coordinate[] {
                new Coordinate(8, 6), new Coordinate(8, 1), new Coordinate(9, 3)
        };
        MultiPoint multiPoint = geometryFactory.createMultiPointFromCoords(coordinate1);

        coordinate2 = new Coordinate[] {
                new Coordinate(2, 5), new Coordinate(2, 2), new Coordinate(12, 2), new Coordinate(12, 5), new Coordinate(2, 5)
        };
        Polygon polygon = geometryFactory.createPolygon(coordinate2);

        LOGGER.info("multiPoint1 - polygon 九交模型值:{}", multiPoint.relate(polygon).toString());
        LOGGER.info("multiPoint1 - polygon 跨越:{}", multiPoint.crosses(polygon));
        LOGGER.info("multiPoint1: {}, polygon: {}", WKT_WRITER.write(multiPoint), WKT_WRITER.write(polygon));
    }
线与面

在这里插入图片描述

    public void test02() {
        coordinate1 = new Coordinate[] {
                new Coordinate(8, 6), new Coordinate(8, 1), new Coordinate(9, 3)
        };
        LineString lineString = geometryFactory.createLineString(coordinate1);

        coordinate2 = new Coordinate[] {
                new Coordinate(2, 5), new Coordinate(2, 2), new Coordinate(12, 2), new Coordinate(12, 5), new Coordinate(2, 5)
        };
        Polygon polygon = geometryFactory.createPolygon(coordinate2);

        LOGGER.info("lineString - polygon 九交模型值:{}", lineString.relate(polygon).toString());
        LOGGER.info("lineString - polygon 跨越:{}", lineString.crosses(polygon));
        LOGGER.info("lineString: {}, polygon: {}", WKT_WRITER.write(lineString), WKT_WRITER.write(polygon));
    }
线与线

在这里插入图片描述

    /**
     * 线与线
     * [0********]
     */
    public void test03() {
        coordinate1 = new Coordinate[] {
                new Coordinate(3, 4), new Coordinate(12, 4)
        };
        LineString lineString1 = geometryFactory.createLineString(coordinate1);

        coordinate2 = new Coordinate[] {
                new Coordinate(7, 7), new Coordinate(7, 1)
        };
        LineString lineString2 = geometryFactory.createLineString(coordinate2);

        LOGGER.info("lineString - polygon 九交模型值:{}", lineString1.relate(lineString2).toString());
        LOGGER.info("lineString - polygon 跨越:{}", lineString1.crosses(lineString2));
        LOGGER.info("lineString: {}, polygon: {}", WKT_WRITER.write(lineString1), WKT_WRITER.write(lineString2));
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

掌握 Web3 的关键工具:9大宝藏APP助你玩转区块链

Web3世界充满了无限机遇,但要掌握它,您需要合适的工具���。今天,我将为您介绍9款Web3必备APP,涵盖钱包、DEX、和工具三大类别。而且,我要特别强烈推荐一个强大的钱包——Bitget Wall…

CAN 通信-底层

本文主要以rockchip的rk3568平台基础,介绍can 控制器、硬件电路和底层驱动。 rk3568 CAN 控制器 概览 CAN(控制器区域网络)总线是一种稳健的车载总线标准,它允许微控制器和设备在没有主机计算机的应用中相互通信。它是一个基于消息的协议,最初是为了在汽车中多路…

Godot快速精通-从看懂英文文档开始-翻译插件

视频教程地址:https://www.bilibili.com/video/BV1t8411q7hw/ 大家好,我今天要和大家分享的是如何快速精通Godot,众所周知,一般一个开源项目都会有一个文档,对于有一定基础或者是理解能力强的同学,看文档比…

Qt QPair

QPair 文章目录 QPair 摘要QPairQPair 特点代码示例QPair 与 QMap 区别 关键字: Qt、 QPair、 QMap、 键值、 容器 摘要 今天在观摩小伙伴撸代码的时候,突然听到了QPair自己使用Qt开发这么就,竟然都不知道,所以趁没有被人发…

关于网络协议的若干问题(二)

1、网络号、IP 地址、子网掩码和广播地址的先后关系是什么? 答:当在一个数据中心或者一个办公室规划一个网络的时候,首先是网络管理员规划网段,一般是根据将来要容纳的机器数量来规划,一旦定了,以后就不好…

在 centos7 上安装Docker

1、检查linux内核 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 uname -r 2、使用 root 权限登录 Centos…

商业化之路怎么走,一家开源分布式数据库厂商的答案|爱分析调研

01 商业化是衡量开源项目成功与否的重要维度之一 中国开源软件商业化公司的涌起以及资本对开源的持续关注,正打破人们对开源与商业化“互斥”的传统印象,展现出两者关系的真正本质,即开源和商业化可以相互促进、相互融合,协同发展…

Apache Doris (三十九):Doris数据导出 - MySQL dump导出

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

Spring Cloud 2023 新特性 同步网关

网关不支持传统 Servlet 容器 Spring Cloud Gateway 需要运行在提供的 Netty 运行时。它不能在传统的 Servlet 容器中工作,也不能在构建为 WAR 时工作。WebFlux 使用了异步非阻塞的编程模型,相较于传统的 MVC Servlet 需要理解和适应新的编程范式和响应…

Python之函数详解

一、函数的定义与调用 函数定义语法: def 函数名([参数列表]): ‘’‘注释’‘’ 函数体 注意事项 函数形参不需要声明类型,也不需要指定函数返回值类型即使该函数不需要接收任何参数,也必须保留一对空的圆括号 括号后面的冒号必不可少函数…

数据结构之堆的实现

首先我们要想堆应该用什么实现,我们这里可以使用数组,因为每一层的数是有限个的,所以我们可以很容易将数的每一个位置对应到数组中去。 那我们就可以仿照顺序表写出我们的结构。 然后我们要考虑我们要实现哪些函数。 最基本的功能初始化和销…

Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行

一、前言 由于 Jetson 系列的开发板 CPU 性能不是很好,因此在处理图像数据时往往需要 GPU 加速,而 VINS-Fusion 是针对同步定位与建图(SLAM)问题中十分出色的视觉算法,但是其在图像处理过程中资源消耗较大&#xff0c…

TypeScript基础语法

👨 作者简介:大家好,我是Taro,前端领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、TS是什么?二、使用步骤1.安装TS…

力扣刷题 day41:10-11

1.乘积最大子数组 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 方法一&…

图像特征算法---ORB算法的python实现

一、ORB算法 1.算法简介 ORB 是 Oriented Fast and Rotated Brief 的简称,可以用来对图像中的关键点快速创建特征向量,这些特征向量可以用来识别图像中的对象。 其中,Fast 和 Brief 分别是特征检测算法和向量创建算法。ORB 首先会从图像中…

Nginx常用操作命令

文章目录 前言Nginx常用操作指令查看Nginx版本号启动Nginx && 关闭Nginx重新加载Nginx 前言 我们在使用Nginx操作命令之前,我们必须要进入到Nginx的目录里面才可以。 指令1:   cd /usr/local/nginx/   指令2:    cd sbin 也可…

计算机毕业设计 it职业生涯规划系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

MySQL三大日志undolog、redolog、binlog

在MySQL中,很多的功能也都需要基于日志实现,比如事务回滚、数据持久化、数据恢复、数据迁移、MVCC机制。其中undolog、redolog都是InnoDB引擎中的日志,而且都是在Buffer Pool中,而binlog在Server层中,位于每条线程中。…

如何在小程序首页设置标题栏文字

小程序的首页标题栏是用户进入小程序时首先看到的部分,因此设置一个适合文字对于树立品牌非常有作用。以下是一些简单的步骤,教你如何在小程序的首页设置标题栏文字(如下图,白色的“商城”文字)。 1. 在小程序管理员后…

电大搜题——学习的好机会

添加图片注释,不超过 140 字(可选) 近年来,随着广播电视大学教育的普及,重庆开放大学以其卓越的教学品质和领先的教育理念,在继续教育领域崭露头角。作为这一教育品牌下的杰出成果,电大搜题微信…