【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS

这篇具有很好参考价值的文章主要介绍了【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JTS = Java Topology Suite

几何计算:

1. 前端js就用这个 Turfjs的类库。参考网站: 计算两线段相交点 | Turf.js中文网

2. 后端java语言就可以用 JTS这个类库,参考网站:

 JTS参考网站:

1. https://github.com/locationtech/jts

GitHub - locationtech/jts: The JTS Topology Suite is a Java library for creating and manipulating vector geometry.The JTS Topology Suite is a Java library for creating and manipulating vector geometry. - GitHub - locationtech/jts: The JTS Topology Suite is a Java library for creating and manipulating vector geometry.https://github.com/locationtech/jts 2. https://locationtech.github.io/jts/JTS | Documentationhttps://locationtech.github.io/jts/

1. https://github.com/locationtech/jts

2. https://locationtech.github.io/jts/

POM文件:

<dependency>
    <groupId>org.locationtech.jts</groupId>
    <artifactId>jts-core</artifactId>
    <version>1.18.0</version>
</dependency>

实例代码:

可以通过JTS

要使用JTS(Java Topology Suite)库计算

1. 某个点是否在另外一个闭合的空间内
2. 计算某个闭合的空间的中心的的位置

3. 已知两个点的经纬度,计算他们之间的距离

4. 已知某点的经纬度坐标,计算其他点的经纬度坐标

 简单实例如下:文章来源地址https://www.toymoban.com/news/detail-485784.html

package com.simulate.jts;

import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.geom.Polygon;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKTReader;
import org.locationtech.jts.linearref.LengthIndexedLine;


public class JtsExample {


    public static void main(String[] args) throws ParseException {

        // 1. 某个点是否在另外一个闭合的空间内
        // isInside();

        // 2. 计算某个闭合的空间的中心的的位置
        // calcCentPoint();

        //3. 已知两个点的经纬度,计算他们之间的距离
        // pointDistance();

        // 4. 已知某点的经纬度坐标,计算其他点的经纬度坐标
        calcCoordinate();

        // 5.


    }

    // 1. 某个点是否在另外一个闭合的空间内
    static void isInside() throws ParseException{
        // 创建 GeometryFactory 对象
        GeometryFactory geometryFactory = new GeometryFactory();

        // 创建点对象
        Coordinate pointCoord = new Coordinate(2.0, 2.0);
        Point point = geometryFactory.createPoint(pointCoord);

        // 创建多边形对象
        WKTReader wktReader = new WKTReader(geometryFactory);
        Polygon polygon = (Polygon) wktReader.read("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))");

        // 判断点是否在多边形内部
        boolean isInside = polygon.contains(point);

        // 输出结果
        System.out.println("Point: " + point.toText());
        System.out.println("Polygon: " + polygon.toText());
        System.out.println("Is inside: " + isInside);
    }


    // 2. 计算某个闭合的空间的中心的的位置
    static void calcCentPoint(){
        int pointCount = 5;
        Coordinate[] coordinates = new Coordinate[pointCount];

        // 填充Coordinate数组
        coordinates[0] = new Coordinate(1.0, 1.0);
        coordinates[1] = new Coordinate(2.0, 3.0);
        coordinates[2] = new Coordinate(4.0, 1.0);
        coordinates[3] = new Coordinate(3.0, 4.0);
        coordinates[4] = new Coordinate(1.0, 1.0);

        // 创建Polygon对象
        GeometryFactory factory = new GeometryFactory();
        Polygon polygon = factory.createPolygon(coordinates);
        polygon.getDimension();

        // 计算中心点坐标
        Coordinate centerCoordinate = polygon.getCentroid().getCoordinate();
        double centerX = centerCoordinate.x;
        double centerY = centerCoordinate.y;

        // 输出结果
        System.out.println("Center point: (" + centerX + ", " + centerY + ")");
    }


    //3. 已知两个点的经纬度,计算他们之间的距离
    static void pointDistance(){
        double lon1 = 115.8575; // 第一个点的经度
        double lat1 = 28.6829;  // 第一个点的纬度
        double lon2 = 116.4074; // 第二个点的经度
        double lat2 = 39.9042;  // 第二个点的纬度

        // 创建GeometryFactory对象
        GeometryFactory factory = new GeometryFactory();

        // 创建Coordinate对象
        Coordinate coordinate1 = new Coordinate(lon1, lat1);
        Coordinate coordinate2 = new Coordinate(lon2, lat2);

        // 创建Point对象
        Point point1 = factory.createPoint(coordinate1);
        Point point2 = factory.createPoint(coordinate2);

        // 计算两点之间的距离
        double distance = point1.distance(point2);


        // 输出结果
        System.out.println("Distance between the two points: " + distance);
    }



    /
    // 4. 已知某点的经纬度坐标,计算其他点的经纬度坐标
    static void calcCoordinate() {
        // 假设已知的参考点的坐标
        double lat1 = 40.7128;   // 参考点的纬度
        double lon1 = -74.0060;  // 参考点的经度

        // 假设要计算的距离和方向
        double distanceInMeters = 1000;  // 距离为 1000 米
        double bearingInDegrees = 45;    // 方向为 45 度

        // 创建参考点的坐标对象
        Coordinate referenceCoord = new Coordinate(lon1, lat1);

        // 计算目标点的坐标
        Coordinate targetCoord = calculateCoordinate(referenceCoord, distanceInMeters, bearingInDegrees);

        // 打印目标点的经纬度
        System.out.println("目标点的经度:" + targetCoord.x);
        System.out.println("目标点的纬度:" + targetCoord.y);
    }

    // 使用 JTS 计算目标坐标
    static Coordinate calculateCoordinate(Coordinate referenceCoord, double distance, double bearing) {
        // 将距离转换为度数
        double distanceInDegrees = Math.toDegrees(distance / 6371000.0); // 假设地球是一个球体,半径为 6371000 米

        // 根据参考点和距离创建线段对象
        // LengthIndexedLine line = new LengthIndexedLine(new Coordinate[] { referenceCoord });
        GeometryFactory factory = new GeometryFactory();
        Point referencePoint = factory.createPoint(referenceCoord);
        LengthIndexedLine line = new LengthIndexedLine(referencePoint);

        // 在线段上根据方向和距离计算目标点的索引
        double targetIndex = line.project(referenceCoord) + distanceInDegrees;

        // 根据目标索引获取目标点的坐标
        Coordinate targetCoord = line.extractPoint(targetIndex);
        return targetCoord;
    }
}

到了这里,关于【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Win10十二月更新系统讲了什么?

    微软今天凌晨发布了win10系统12月最新的累积更新补丁,根据该公司的公告,更新 KB5021233 将版本号增加到构建 19042.2364 (20H2)、19043.2364 (21H1)、19044.2364 (21H2) 和 19045.2364 (22H2),并引入了安全修复程序和以前在 11 月发布的预览更新 KB5020030 中可用的更改15. 一些改进包括

    2024年02月10日
    浏览(39)
  • JTS:10 Crosses

    版本 org.locationtech.jts:jts-core:1.19.0 链接: github 点与线 点与面 线与面 线与线

    2024年02月07日
    浏览(33)
  • Java原来可以这么玩!CV实现多张图片生成视频

    比如我像将几张图片变成一个视频的形式发不到短视频平台,虽然短视频平台也有上传图片变成视频的功能,但是我想要具体控制每张图片显示多久后切换到下一个图片,短视频平台目前无法实现,于是乎,我用java代码实现了这个功能。 生成视频展示 多张图片生成视频 Ja

    2024年01月17日
    浏览(49)
  • Java初学者也可以实现的图书系统小练习

           大家好呀,我是小戴🙌🙌🙌        最近大家不是快期末了嘛,有没有泡图书馆呀?今天的学习内容跟图书馆有关,没错,就是图书管理系统,但是目前所学知识水平有限,这是一个很简单的图书系统小练习。不要急,我们的 目的是在于如何使用已知学过的知识进

    2023年04月09日
    浏览(47)
  • Unity如何实现让Sprite和UI显示在模型前面而不会被模型遮挡

    在不使用Shader的情况下实现UI显示在模型前面方法 ps:本人只做记笔记使用 使用前: 使用后: 1.首先需要把显示的UI或者Sprite的层级设置为UI层或者你自定义的层 2.创建俩个摄像机 3.主摄像机不变,需要渲染的层级依旧是Everything 次摄像机的CullingMask只选择UI或者自定义层,以

    2024年02月22日
    浏览(42)
  • JTS空间坐标Geometry使用

    Geomtery子类图 创建Geometry Geometry转换坐标系 Geometry方法 Geometry 与 WKT 转换 pom.xml

    2023年04月22日
    浏览(26)
  • JTS: 14 LineMerger 多线合并

    版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码

    2024年02月06日
    浏览(36)
  • java实现连接远程服务器,并可以执行shell命令

    你可以使用Java中的SSH库来连接远程服务器并执行shell命令。下面是一个简单的示例代码: 请注意替换 your_host , your_username , your_password 和 your_shell_command 为实际的远程服务器信息和要执行的shell命令。该示例代码使用JSch库来建立SSH连接并执行命令。

    2024年01月20日
    浏览(64)
  • Java连接数据库(学生管理系统案例,可以实现增删改查)

    首先,需要做一个准备工作 ——下载jar包,这个包是用来支持数据库的连接的 官网的下载链接:MySQL :: Download Connector/J 点击链接进入页面: 选择画红框的下载按钮。 与此同时,打开IDEA开发工具,在当前项目目录下新建一个lib目录文件夹用来存放第三方jar包,这样做方便管

    2024年02月07日
    浏览(55)
  • Java实现简单的UI界面,并可以选取文件及处理(JFrame)

    package com.main; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import javax.swing.JButton; import javax.sw

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包