JTS: 21 MinimumBoundingCircle 最小包裹圆

news2025/1/11 0:45:36

文章目录

      • 版本
      • 代码

版本

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

代码

在这里插入图片描述

package pers.stu.algorithm;

import org.locationtech.jts.algorithm.MinimumBoundingCircle;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Polygon;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pers.stu.util.GeoGebraUtil;

/**
 * 最小包裹圆
 * @author LiHan
 * 2023-11-13 17:11:13
 */
public class MinimumBoundingCircleUse {

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

    public static void main(String[] args) {
        MinimumBoundingCircleUse minimumBoundingCircleUse = new MinimumBoundingCircleUse();
        minimumBoundingCircleUse.test00();
    }

    public void test00() {
        Coordinate[] coordinates = new Coordinate[] {
                new Coordinate(4, 14), new Coordinate(13,14), new Coordinate(13,8), new Coordinate(4,8),
                new Coordinate(4, 14)
        };

        GeometryFactory geometryFactory = new GeometryFactory();
        Polygon polygon = geometryFactory.createPolygon(coordinates);
        MinimumBoundingCircle minimumBoundingCircle = new MinimumBoundingCircle(polygon);
        // 最小图形的直径
        Geometry geometry1 = minimumBoundingCircle.getDiameter();
        // 最小边界圆
        Geometry geometry2 = minimumBoundingCircle.getCircle();
        // 圆的直径
        Geometry geometry3 = minimumBoundingCircle.getMaximumDiameter();
        LOGGER.info("原始数据:{}, getDiameter数据:{}", geometry1, GeoGebraUtil.compare(geometry1));
        LOGGER.info("原始数据:{}, getCircle数据:{}", geometry2, GeoGebraUtil.compare(geometry2));
        LOGGER.info("原始数据:{}, getMaximumDiameter数据:{}", geometry3, GeoGebraUtil.compare(geometry3));

    }
}
18:22:42.657 [main] INFO  pers.stu.util.GeoGebraUtil - geometry类型:LineString
18:22:42.666 [main] INFO  pers.stu.algorithm.MinimumBoundingCircleUse - 原始数据:LINESTRING (4 8, 13 8), getDiameter数据:Polyline(Point({4.0,8.0}),Point({13.0,8.0}))
18:22:42.666 [main] INFO  pers.stu.util.GeoGebraUtil - geometry类型:Polygon
18:22:42.667 [main] INFO  pers.stu.algorithm.MinimumBoundingCircleUse - 原始数据:POLYGON ((13.908326913195985 11, 13.804407428071261 9.944887760936103, 13.496642540231717 8.93032289350567, 12.996859481720486 7.995294556589521, 12.32426463519459 7.175735364805412, 11.50470544341048 6.503140518279514, 10.56967710649433 6.003357459768283, 9.555112239063899 5.695592571928739, 8.5 5.591673086804016, 7.444887760936103 5.695592571928739, 6.43032289350567 6.003357459768283, 5.495294556589522 6.503140518279513, 4.675735364805412 7.17573536480541, 4.003140518279513 7.995294556589521, 3.5033574597682833 8.93032289350567, 3.1955925719287386 9.944887760936101, 3.0916730868040156 11, 3.1955925719287386 12.055112239063899, 3.5033574597682833 13.06967710649433, 4.003140518279513 14.004705443410478, 4.67573536480541 14.824264635194588, 5.495294556589521 15.496859481720486, 6.430322893505666 15.996642540231715, 7.4448877609361 16.30440742807126, 8.499999999999998 16.408326913195985, 9.555112239063899 16.30440742807126, 10.569677106494332 15.996642540231715, 11.504705443410478 15.496859481720488, 12.324264635194588 14.82426463519459, 12.996859481720486 14.00470544341048, 13.496642540231715 13.069677106494334, 13.804407428071261 12.0551122390639, 13.908326913195985 11)), getCircle数据:Polygon(Point({13.908326913195985,11.0}),Point({13.804407428071261,9.944887760936103}),Point({13.496642540231717,8.93032289350567}),Point({12.996859481720486,7.995294556589521}),Point({12.32426463519459,7.175735364805412}),Point({11.50470544341048,6.503140518279514}),Point({10.56967710649433,6.003357459768283}),Point({9.555112239063899,5.695592571928739}),Point({8.5,5.591673086804016}),Point({7.444887760936103,5.695592571928739}),Point({6.43032289350567,6.003357459768283}),Point({5.495294556589522,6.503140518279513}),Point({4.675735364805412,7.17573536480541}),Point({4.003140518279513,7.995294556589521}),Point({3.5033574597682833,8.93032289350567}),Point({3.1955925719287386,9.944887760936101}),Point({3.0916730868040156,11.0}),Point({3.1955925719287386,12.055112239063899}),Point({3.5033574597682833,13.06967710649433}),Point({4.003140518279513,14.004705443410478}),Point({4.67573536480541,14.824264635194588}),Point({5.495294556589521,15.496859481720486}),Point({6.430322893505666,15.996642540231715}),Point({7.4448877609361,16.30440742807126}),Point({8.499999999999998,16.408326913195985}),Point({9.555112239063899,16.30440742807126}),Point({10.569677106494332,15.996642540231715}),Point({11.504705443410478,15.496859481720488}),Point({12.324264635194588,14.82426463519459}),Point({12.996859481720486,14.00470544341048}),Point({13.496642540231715,13.069677106494334}),Point({13.804407428071261,12.0551122390639}),Point({13.908326913195985,11.0}))
18:22:42.668 [main] INFO  pers.stu.util.GeoGebraUtil - geometry类型:LineString
18:22:42.668 [main] INFO  pers.stu.algorithm.MinimumBoundingCircleUse - 原始数据:LINESTRING (13 8, 4 14), getMaximumDiameter数据:Polyline(Point({13.0,8.0}),Point({4.0,14.0}))

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

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

相关文章

ReportLab创建合同PDF

一、前言 有一个项目需要将电子签名后的报价合同和生成的发票发送给客户,这种发送给客户的文件一般都是使用PDF格式,主要是因为PDF特别适合阅读且不同平台打开文件格式不会变形,不过要在程序中生成PDF还是比较麻烦的,我们的发票是…

MySQL最新2023年面试题及答案,汇总版(7)【MySQL最新2023年面试题及答案,汇总版-第三十七刊】

文章目录 MySQL最新2023年面试题及答案,汇总版(7)01、NOW() 和 CURRENT_DATE() 有什么区别?02、CHAR和VARCHAR的区别?03、主键索引与唯一索引的区别?04、MySQL中有哪些不同的表格?05、SQL的生命周期?06、你…

nginx四层tcp负载均衡及主备、四层udp负载均衡及主备、7层http负载均衡及主备配置(wndows系统主备、负载均衡)

准备工作 服务器上安装、配置网络负载平衡管理器 windows服务器热备、负载均衡配置-CSDN博客 在windows服务器上安装vmware17 在windows上利用vmware17 搭建centos7 mini版本服务器 设置好静态ip地址(因为windows 服务器上的网络负载平衡管理器不支持dhcp的服务器…

【git】解决git报错:ssh:connect to host github.com port 22: Connection timed out 亲测有效

如题,git使用中突然报错 ssh:connect to host github.com port 22: Connection timed out 通过查阅各种资料,得知原因可能是由于电脑的防火墙或者其他网络原因导致ssh连接方式 端口22被封锁。 解决方法 一:抛弃ssh连接方式,使…

YOLOv8-Seg改进:卷积变体系列篇 | PConv,减少冗余计算和内存访问可以更有效地提取空间特征 | CVPR2023 FasterNet

🚀🚀🚀本文改进:PConv,减少冗余计算和内存访问可以更有效地提取空间特征,引入到YOLOv8,与C2f结合实现二次创新; 🚀🚀🚀PConv 亲测在多个数据集能够实现涨点,同样适用于小目标分割 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习…

第2关:多表查询

任务描述 join操作符编程要求测试说明 任务描述 本关任务: 使用join操作符实现多表查询。 join操作符 1.笛卡尔积,RXS 可直接转换为SQL语句 2.等值连接,记作 可直接转换为SQL语句 3.自然连接,记作 可转换为SQL语句 4.左外连接…

对这套BI零售数据分析方案心动,是零售人天性

零售数据分析做了这么多年,难道真的没累积点经验,摸索出一条又快又能满足绝大多数需求的数据分析捷径?别人不知道,奥威BI还真就有这么一套标准化的BI零售数据分析方案,不管是服装零售、医药连锁、商超都能利用这套方案…

基于springboot实现小学家校一体“作业帮”系统项目【项目源码】

基于springboot实现小学家校一体“作业帮”系统演示 Java语言简介 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具…

如何在 macOS 中删除 Time Machine 本地快照

看到这个可用82GB(458.3MB可清除) 顿时感觉清爽,之前的还是可用82GB(65GB可清除),安装个xcode都安装不上,费解半天,怎么都解决不了这个问题,就是买磁盘情理软件也解决不了…

JavaScript中this关键字实践

● 在全局中, this关键字表示全局窗口 console.log(this);● 在严格模式下,this不指向函数本身,在非严格模式下,this指向全局窗口 console.log(this);const calcAge function (birthYear) {console.log(2037 - birthYear);cons…

Intellij IDEA 内存设置的问题 及解决

解决方案: 在IDEA上运行较大项目时,编译量很大,可能会报出 Error:java: java.lang.OutOfMemoryError: Java heap space 的错误,解决方法如下: java.lang.OutOfMemoryError是内存不足导致的,因此需要修改Id…

主从复制和读写分离

MySQL 主从复制和读写分离: 主从复制:主MySQL上的数据,新增,修改库,表,表里的数据,都会同步到从MySQL上。 MySQL的主从复制的模式:(面试题) 1,异…

【PE】PE文件结构(一)

概述:PE文件结构基础认识之DOS头和PE头(以 rpcrt4.dll 为例分析) 0x01 前言 PE(Portable Executable),即可移植的执行体。 Linux平台:ELF(Executable and Linking Format)文件结构。 Windows平…

新生儿奶瓣:原因、科普和注意事项

引言: 新生儿奶瓣是一种婴儿口腔内的常见现象,它通常被视为正常的生理发展。然而,对于一些新父母而言,了解奶瓣的原因以及如何处理是至关重要的。本文将科普新生儿奶瓣的原因,提供相关信息,并为父母和监护…

YOLOv8-Seg改进:卷积变体系列篇 | DCNv3可形变卷积基于DCNv2优化 | CVPR2023

🚀🚀🚀本文改进:DCNv3算子,基于DCNv2算子引入共享投射权重、多组机制和采样点调制,引入到YOLOv8,与C2f结合实现二次创新; 🚀🚀🚀DCNv3 亲测在多个数据集能够实现涨点,同样适用于小目标分割 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐…

算法的入门基础了解

目录 算法的特征 如何设计算法? 伪代码 “算法”一词最早出现在《周髀算经》这本书中,对应的英文单词是“algorism”(由 9 世纪的波斯数学家阿尔霍瓦里兹米提出),代指阿拉伯数字的运算规则。随着计算机的快速发展&a…

设计大咖亲授:Figma中文环境设置全攻略!

作为UI设计师,你一定很熟悉Figma,Figma是一款专注于UI/UX设计的在线协作工具,使用非常高效方便,不需要下载和安装。它只需要通过浏览器编辑,在国外很受欢迎。但是Figma对于国内的小伙伴来说,使用Figma有一定…

Java面试题(每天10题)-------连载(30)

目录 多线程篇 1、可以运行时kill掉一个线程吗? 2、关于synchronized 3、分布式锁,程序数据库中死锁机制及解决方案 4、spring单例为什么没有安全问题(ThreadLocal) 5、线程池原理 6、Java锁多个对象 7、Java线程如何启动 …

基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境OpenCV环境 相关其它博客工程源代码下载其它资料下载 前言 本项目基于从网络获取的多种银行卡数据集,采用OpenCV库的函数进行图像处理,并通过神经网络进行模型训练。最终实…

雅虎、美客多、Temu、Allegro、亚马逊跨境平台选品技巧方法,测评养号攻略。

(1) Best Sellers选品法 这个方法顾名思义,就是大家熟悉的热销榜单选品法。 不做过多解释,在自己熟悉的品类,隔几天就会观察一下前100名里有没有冒出什么新品。 它和现有的产品相同还是不同,自己做哪些搭配或者迭代…