JTS-通过Coordinate点截断几何Geometry

news2025/1/17 5:50:20

背景

通过一堆点,线上的点或者靠近线的点,来截取线段,将线段截取成多段
在这里插入图片描述

代码片段

/**
     * 通过点截取线,点可以是线上的形状点也可以是靠近线的点
     *
     * 线 ------------------------------------------
     * 点 .        .     .      .       .           .
     *
     * 截取完的线段:
     *    .---------.-----.------.-------.-----------.
     *
     */
    public static List<Geometry> subLineUseCoordinates(Geometry lineString, Coordinate[] coordinates){

        List<LinearLocation> linearLocations = new ArrayList<>();

        LocationIndexedLine locationIndexedLine = new LocationIndexedLine(lineString);

        LinearLocation startIndex = locationIndexedLine.getStartIndex();
        LinearLocation endIndex = locationIndexedLine.getEndIndex();

        //加入线的收尾 偏移量
        linearLocations.add(startIndex);
        linearLocations.add(endIndex);

        //加入点的偏移量
        for (Coordinate coordinate : coordinates) {
            LinearLocation indexOfCoordinate = locationIndexedLine.indexOf(coordinate);
            linearLocations.add(indexOfCoordinate);
        }

        //排序
        linearLocations.sort(Comparator.comparingDouble(e-> e.getSegmentIndex()+e.getSegmentFraction()));

        List<Geometry> subGeos = new ArrayList<>();

        //截取
        for (int i= 0; i < linearLocations.size(); i++) {
            int next = i+1;
            if(next >= linearLocations.size()){
                break;
            }
            LinearLocation currentLinear = linearLocations.get(i);
            LinearLocation nextLinear = linearLocations.get(next);

            subGeos.add(locationIndexedLine.extractLine(currentLinear, nextLinear));
        }

        return subGeos;

    }

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

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

相关文章

YOLO目标检测——复杂场景人员数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;安防监控、人群管理、自动驾驶、城市规划、人机交互等等数据集说明&#xff1a;YOLO目标检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富。使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(j…

C++模版初阶讲解

今日为大家分享C的模版&#xff0c;这里先把模版的初阶讲解一下&#xff0c;以后再讲解模版进阶&#xff01; 前言&#xff1a;模版的引入 在我们进行学习的编程中&#xff0c;常常会有许多函数的功能相同&#xff0c;有些不同点可能就是其中的数据类型不同&#xff01;如果我…

Jmeter连接Mysql数据库

一.下载mysql数据驱动 https://dev.mysql.com/downloads/connector/j/ 二、在Jmeter测试计划中添加驱动包 三、jmeter添加配置元件&#xff1a;JDBC Connection Configuration 四、Jmeter发送JDBC请求 五、提取mysql查询结果

工业交换机的应用场景

在选择工业交换机的时候&#xff0c;很多人会疑惑自己的场景是否适用工业交换机&#xff0c;工业交换机广泛应用于以下场景&#xff0c;大家可以参考了解 1. 工业自动化&#xff1a;工业交换机用于连接各种工业设备&#xff0c;如PLC&#xff08;可编程逻辑控制器&#xff09;、…

【探索C++】三大特性以及类和对象(包括类的特殊函数成员)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

遇到的问题总结

1、在实验室服务器里运行新项目的时候遇到 conda activate pytorch3_7(我的环境名字) conda install -c anaconda tensorboard (失败 一直堵在"Solving environment" &#xff09; pip install tensorboard

VS使用Visual Assist添加代码说明信息

写代码时&#xff0c;我们一般需要在代码的最前面添加一些说明信息&#xff0c;作者的联系方式等等。一些高级的 IDE 工具提供修改代码模板的功能&#xff0c;这样就能够在创建新代码时自动加上版权信息。Visual Studio 虽然没有提供这样的操作界面&#xff0c;但是我们可以通过…

Cron表达式每周三周五18点执行

Cron表达式每周三周五18点执行 0 0 18 ? * WED,FRI验证正确性&#xff1a;

C# Winform编程(5)菜单栏和工具栏

菜单和菜单组件 添加菜单编辑菜单菜单栏和工具栏 添加菜单 将MenuStrip控件拖拽到Form窗体顶部添加菜单 编辑菜单 添加菜单项&#xff0c;编辑菜单属性等功能。 右键单击已添加的菜单项可以弹出右键菜单&#xff1a; 可以设置菜单图标&#xff0c;使能菜单&#xff0c;显示…

[Python中常用的回归模型算法大全:从线性回归到XGBoost]

文章目录 概要保序回归&#xff1a;理论与实践多项式回归&#xff1a;探索数据曲线关系多输出回归的示例 概要 在数据科学和机器学习领域&#xff0c;回归分析是一项关键任务&#xff0c;用于预测连续型变量的数值。除了传统的线性回归模型外&#xff0c;Python提供了丰富多样…

每周电子W4——电路与电路模型

文章目录 每周电子W4——电路与电路模型电路电路模型电流和电压的参考方向电流的参考方向电压的参考方向 电功率 每周电子W4——电路与电路模型 电路 实际电路&#xff1a;由电工设备和电气器件按预期目的连接构成的电流的通路。 为完成某种预期的目的而设计、安装、运行的&a…

latex:表格水平宽度调整

解决方案 结果如下&#xff1a; 源代码如下&#xff1a; \documentclass{article} % \usepackage[utf8]{ctex} \usepackage{multirow} \usepackage{graphicx} \usepackage{booktabs} \usepackage{caption}\begin{document}\captionsetup{font{large}}\begin{table}[] \centeri…

数据结构 - 7(Map和Set 15000字详解)

一&#xff1a; 二叉搜索树 1.1 二叉搜索树的概念 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所…

萝卜刀真的太危险了,于是我用Cocos做了一个

点击上方亿元程序员关注和★星标 引言 大家好&#xff0c;我是亿元程序员&#xff0c;一位有着8年游戏行业经验的主程。 昨天&#xff0c;我女儿和我说想买一把萝卜刀&#xff0c;众所周知&#xff0c;萝卜刀在潜意识当中是存在一定的危险的&#xff0c;所以我果断拒绝了&…

Elasticsearch介绍及插件head和kibana下载

目录标题 一、Elasticsearch介绍二、Elasticsearch下载三、Elasticsearch-head四、Elasticsearch-kibana 一、Elasticsearch介绍 Elasticsearch是什么? Elasticsearch 是一个基于Lucene的分布式搜索和分析引擎&#xff0c;ES是elaticsearch简写&#xff0c;Elasticsearch是一…

Lite-UNet: 轻量且高效的细胞定位模型,轻量化的U-Net

论文&#xff1a;Lite-UNet: A Lightweight and Efficent Network for Cell Localization Paper Link&#xff1a;Lite-UNet: A Lightweight and Efficent Network for Cell Localization Code&#xff1a; https://github.com/Boli-trainee/Lite-UNet 核心思想&#xff1a;魔…

OpenHarmony 应用全局的 UI 状态存储:AppStorage

AppStorage 是应用全局的 UI 状态存储&#xff0c;是和应用的进程绑定的&#xff0c;由 UI 框架在应用程序启动时创建&#xff0c;为应用程序 UI 状态属性提供中央存储。 和 AppStorage 不同的是&#xff0c;LocalStorage 是页面级的&#xff0c;通常应用于页面内的数据共享。而…

cs231n

计算机视觉概述 a study of visual data visual data has exploded to a ridiculous degree 手机上两三个摄像头&#xff0c;more camera than people&#xff0c;视觉传感器&#xff0c;摄像头终端&#xff0c;产生很多视觉数据 visual data构成互联网上传输的的大部分数据 8…

【Linux-常用命令-基础命令-删除文件夹以及内容-rm--r-命令-笔记】

【Linux-常用命令-基础命令-删除文件夹以及内容-rm--r-命令-笔记】 1、前言2、操作3、自己的操作 1、前言 最近&#xff0c;在使用Linux的时&#xff0c;使用相关基础命令是&#xff0c;总是容易忘记&#xff0c;上网一搜&#xff0c;大部分都写的比较繁琐&#xff0c;关于删除…

Compose竖向列表LazyColumn

基础列表一 LazyColumn组件中用items加载数据&#xff0c;rememberLazyListState()结合rememberCoroutineScope()实现返回顶部。 /*** 基础列表一*/ Composable fun Items() {Box(modifier Modifier.fillMaxSize()) {val context LocalContext.currentval dataList arrayLi…