JTS:11 Overlaps 部分重叠

news2024/11/23 19:24:09

这里写目录标题

      • 版本
      • 代码
        • 1 多点与多点
        • 2 线与线
        • 3 面与面

版本

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

代码

/**
 * 部分重叠
 */
public class GeometryOverlaps {

    private final GeometryFactory geometryFactory = new GeometryFactory();

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

    private static final WKTWriter WKT_WRITER = new WKTWriter();

    private Coordinate[] coordinate1;

    private Coordinate[] coordinate2;

    /**
     * 如果几何图形A和B在空间上重叠,则返回TRUE。
     * 如果两个几何图形具有相同的尺寸,每个几何图形至少有一个点不被另一个几何图形共享(或者等价地,两个几何图形都不覆盖另一个),并且它们内部的交点具有相同的尺寸,则两个几何图形重叠。
     * 这种重叠关系是对称的。
     */
    public static void main(String[] args) {
        GeometryOverlaps geometryOverlaps = new GeometryOverlaps();
        geometryOverlaps.test02();
    }
}
1 多点与多点

在这里插入图片描述

    /**
     * 多点与多点
     */
    public void test00() {
        coordinate1 = new Coordinate[] {
                new Coordinate(1, 6), new Coordinate(7, 6),new Coordinate(7, 1), new Coordinate(1, 1),
                new Coordinate(4, 3), new Coordinate(7, 6)
        };

        MultiPoint multiPoint1 = geometryFactory.createMultiPointFromCoords(coordinate1);

        coordinate2 = new Coordinate[] {
                new Coordinate(2, 5), new Coordinate(6, 5),new Coordinate(6, 2), new Coordinate(2, 2),
                new Coordinate(4, 3), new Coordinate(7, 6)
        };

        MultiPoint multiPoint2 = geometryFactory.createMultiPointFromCoords(coordinate2);

        LOGGER.info("multiPoint1 - multiPoint2 九交模型值:{}", multiPoint1.relate(multiPoint2).toString());
        LOGGER.info("multiPoint1 - multiPoint2 重叠:{}", multiPoint1.overlaps(multiPoint2));
        LOGGER.info("multiPoint1: {}, multiPoint2: {}", WKT_WRITER.write(multiPoint1), WKT_WRITER.write(multiPoint2));
    }
16:18:38.992 [main] INFO  pers.stu.geometry.GeometryOverlaps - multiPoint1 - multiPoint2 九交模型值:0F0FFF0F2
16:18:38.994 [main] INFO  pers.stu.geometry.GeometryOverlaps - multiPoint1 - multiPoint2 重叠:true
16:18:39.000 [main] INFO  pers.stu.geometry.GeometryOverlaps - multiPoint1: MULTIPOINT ((1 6), (7 6), (7 1), (1 1), (4 3), (7 6)), multiPoint2: MULTIPOINT ((2 5), (6 5), (6 2), (2 2), (4 3), (7 6))
2 线与线

在这里插入图片描述

    /**
     * 线与线
     */
    public void test01() {
        coordinate1 = new Coordinate[] {
                new Coordinate(2, 7), new Coordinate(2, 4),new Coordinate(6, 4), new Coordinate(6, 7)
        };

        LineString lineString1 = geometryFactory.createLineString(coordinate1);

        coordinate2 = new Coordinate[] {
                new Coordinate(2, 1), new Coordinate(2, 4),new Coordinate(6, 4), new Coordinate(6, 1)
        };

        LineString lineString2 = geometryFactory.createLineString(coordinate2);

        LOGGER.info("lineString1 - lineString2 九交模型值:{}", lineString1.relate(lineString2).toString());
        LOGGER.info("lineString1 - lineString2 重叠:{}", lineString1.overlaps(lineString2));
        LOGGER.info("lineString1: {}, lineString2: {}", WKT_WRITER.write(lineString1), WKT_WRITER.write(lineString2));
    }
16:54:19.272 [main] INFO  pers.stu.geometry.GeometryOverlaps - lineString1 - lineString2 九交模型值:1F1FF0102
16:54:19.274 [main] INFO  pers.stu.geometry.GeometryOverlaps - lineString1 - lineString2 重叠:true
16:54:19.280 [main] INFO  pers.stu.geometry.GeometryOverlaps - lineString1: LINESTRING (2 7, 2 4, 6 4, 6 7), lineString2: LINESTRING (2 1, 2 4, 6 4, 6 1)
3 面与面

在这里插入图片描述

    /**
     * 面与面
     */
    public void test02() {
        coordinate1 = new Coordinate[] {
                new Coordinate(3, 8), new Coordinate(3, 3),new Coordinate(11, 3), new Coordinate(11, 8),
                new Coordinate(3, 8)
        };

        Polygon polygon1 = geometryFactory.createPolygon(coordinate1);

        coordinate2 = new Coordinate[] {
                new Coordinate(3, 5), new Coordinate(3, 1),new Coordinate(11, 1), new Coordinate(6, 1),
                new Coordinate(3, 5)
        };

        Polygon polygon2 = geometryFactory.createPolygon(coordinate2);

        LOGGER.info("polygon1 - polygon2 九交模型值:{}", polygon1.relate(polygon2).toString());
        LOGGER.info("polygon1 - polygon2 重叠:{}", polygon1.overlaps(polygon2));
        LOGGER.info("polygon1: {}, polygon2: {}", WKT_WRITER.write(polygon1), WKT_WRITER.write(polygon2));
    }
16:55:24.524 [main] INFO  pers.stu.geometry.GeometryOverlaps - polygon1 - lineString2 九交模型值:212111212
16:55:24.526 [main] INFO  pers.stu.geometry.GeometryOverlaps - polygon1 - lineString2 重叠:true
16:55:24.531 [main] INFO  pers.stu.geometry.GeometryOverlaps - polygon1: POLYGON ((3 8, 3 3, 11 3, 11 8, 3 8)), lineString2: POLYGON ((3 5, 3 1, 11 1, 6 1, 3 5))

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

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

相关文章

提升自动化测试效率的秘密武器——Allure Report

一.使用 Allure2 运行方式-Python # --alluredir 参数生成测试报告。 # 在测试执行期间收集结果 pytest [测试用例/模块/包] --alluredir./result/ (—alluredir这个选项 用于指定存储测试结果的路径)# 生成在线的测试报告 allure serve ./result二.使用 Allure2 运行方式-Ja…

TCP/IP(十四)流量控制

一 流量控制 说明: 本文只是原理铺垫,没有用tcpdumpwiresahrk鲜活的案例讲解,后续补充 ① 基本概念 流量控制: TCP 通过接受方实际能接收的数据量来控制发送方的窗口大小 ② 正常传输过程 背景:1、客户端是接收方,服务端是发送方 --> 下载2、假设接收窗…

Vue绑定样式

一、绑定class样式 语法格式: :class "属性名" (一)字符串写法 该写法适用于样式的类名不确定,需要动态指定的场景 我们用如下的CSS样式进行操作演示 我们要完成点击按钮改变CSS样式的操作,如下图代码所…

33.高等数学

一、函数与极限。 (1)函数。 1.平方根:有正负号。 2.算术平方根:算术平方根都是正数。 3.复数:是由实部和虚部组成的数,可以表示为abi 的形式,其中 a 是实部,b 是虚部。如果虚部…

检验科LIS系统源码,多家二甲医院实际使用,三年持续优化和运维,系统稳定可靠

检验科LIS系统源码,Client/Server架构SaaS服务模式的LIS系统全套源码,自主版权,有演示。 LIS系统,专为医院检验科设计的一套实验室信息系统。它是以数据库为核心,将实验仪器与电脑连接成网,基础功能包括病人…

C# 中大小端Endian

大小端可以找下资料很多,都是文字的。我每次遇到大小端问题就会搜资料,总是记不住。我自己用用图片记录一下,以备直观的从内存中看到。 在C#中可以用BitConverter.IsLittleEndian来查询。 几个数字在内存中 我们来观察一下,我的…

小程序中如何设置所服务地区的时区

在全球化的背景下,小程序除了在中国使用外,还为海外的华人地区提供服务。例如我们采云小程序为泰国、阿根廷、缅甸等国家的商家就提供过微信小程序。这些商家开通小程序,为本地的华人提供服务。但通常小程序的开发者/服务商位于中国&#xff…

Java多线程篇(10)——BlockingQueue(数组,链表,同步阻塞队列)

文章目录 1、ArrayBlockingQueue2、LinkedBlockingQueue3、SynchronousQueue3.1、transfer 公平实现(队列)3.2、transfer 非公平实现(栈) 1、ArrayBlockingQueue put public void put(E e) throws InterruptedException {Objects…

小程序:下拉刷新+上拉加载+自定义导航栏

下拉刷新 &#xff1a; <scroll-view scroll-y"true" 允许纵向滚动 refresher-enabled"true" 开启自定义下拉刷新 默认为false :refresher-triggered&quo…

从读不完一篇文章,到啃下20万字巨著,大模型公司卷起“长文本”

点击关注 文丨郝 鑫 编丨刘雨琦 4000到40万token&#xff0c;大模型正在以“肉眼可见”的速度越变越“长”。 长文本能力似乎成为象征着大模型厂商出手的又一新“标配”。 国外&#xff0c;OpenAI经过三次升级&#xff0c;GPT-3.5上下文输入长度从4千增长至1.6万token&…

MySQL常用命令01

今天开始&#xff0c;每天总结一点MySQL相关的命令&#xff0c;方便大家后期熟悉。 1.命令行登录数据库 mysql -H IP地址 -P 端口号 -u 用户名 -p 密码 数据库名称 -h 主机IP地址 登录本机 localhost或127.0.0.1 -P 数据库端口号 Mysql默认是3306 -u 用户名 -p 密码 …

nodejs+vue+elementui医院挂号预约管理系统4n9w0

前端技术&#xff1a;nodejsvueelementui 前端&#xff1a;HTML5,CSS3、JavaScript、VUE 1、 node_modules文件夹(有npn install Express 框架于Node运行环境的Web框架, 开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff…

公司寄件管理教程

不少企业为了规范因公寄件的管理&#xff0c;节约企业的快递成本&#xff0c;最终简化企业内部办公流程&#xff0c;提升企业整体办公效率&#xff0c;在因公寄件达到一定量的时候&#xff0c;都会推出或繁或简的“公司寄件管理制度”。 所谓的“或繁或简”。是根据企业的寄件场…

前端练习项目(附带页面psd图片及react源代码)

一、前言 相信很多学完前端的小伙伴都想找个前端项目练练手&#xff0c;检测自己的学习成果。但是现在很多项目市面上都烂大街了。今天给大家推荐一个全新的项目——电子校园 项目位置&#xff1a;https://github.com/v5201314/eSchool 二、项目介绍(部分页面展示)&#xff…

C++QT-day6

/*定义一个基类 Animal&#xff0c;其中有一个虛函数perform&#xff08;)&#xff0c;用于在子类中实现不同动物的表演行为。*/ #include <iostream> using namespace std; class Animal //封装Animal类&#xff08;基类&#xff09; { private:string person; public:A…

力扣:130. 被围绕的区域(Python3)

题目&#xff1a; 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O &#xff0c;找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#…

在线免费AI绘画工具

体验地址 点我进行AI绘画 使用 选择以文搜图进行绘画 提问 介绍 首先&#xff0c;我们来了解一下ChatGPT。作为一个人工智能语言模型&#xff0c;它可以自动回答你的问题、提供信息&#xff0c;并与你进行流畅的对话。它通过大量的训练数据和机器学习算法&#xff0c;学…

react–antd 实现TreeSelect树形选择组件,实现点开一层调一次接口

效果图: 注意: 当选择“否”&#xff0c;开始调接口&#xff0c;不要把点击调接口写在TreeSelect组件上&#xff0c;这样会导致问题出现&#xff0c;没有层级了 部分代码:

01Maven的工作机制: Maven作为依赖管理工具以及Maven作为构建管理工具

Maven的特点及其应用 Maven 是 Apache 软件基金会组织维护的一款专门为Java项目提供构建和依赖管理支持的工具 Maven 作为依赖管理工具 管理jar包的规模: 随着我们使用的框架数量越来越多以及框架的封装程度也越来越高&#xff0c;项目中使用的jar包也就越来越多 配置工程依…

自动化测试 —— Pytest fixture及conftest详解!

前言 fixture是在测试函数运行前后&#xff0c;由pytest执行的外壳函数。fixture中的代码可以定制&#xff0c;满足多变的测试需求&#xff0c;包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在&#xff0c;类似u…