国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Turfjs的java版本JTS】前面講了Turfjs可以實(shí)現(xiàn)幾何計(jì)算,空間計(jì)算的功能,如果后端要做這項(xiàng)功能也有類似的類庫,JTS

這篇具有很好參考價(jià)值的文章主要介紹了【Turfjs的java版本JTS】前面講了Turfjs可以實(shí)現(xiàn)幾何計(jì)算,空間計(jì)算的功能,如果后端要做這項(xiàng)功能也有類似的類庫,JTS。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

JTS =?Java Topology Suite

幾何計(jì)算:

1.?前端js就用這個(gè) Turfjs的類庫。參考網(wǎng)站:?計(jì)算兩線段相交點(diǎn) | Turf.js中文網(wǎng)

2. 后端java語言就可以用 JTS這個(gè)類庫,參考網(wǎng)站:

?JTS參考網(wǎng)站:

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>

實(shí)例代碼:

可以通過JTS

要使用JTS(Java Topology Suite)庫計(jì)算

1. 某個(gè)點(diǎn)是否在另外一個(gè)閉合的空間內(nèi)
2. 計(jì)算某個(gè)閉合的空間的中心的的位置

3. 已知兩個(gè)點(diǎn)的經(jīng)緯度,計(jì)算他們之間的距離

4. 已知某點(diǎn)的經(jīng)緯度坐標(biāo),計(jì)算其他點(diǎn)的經(jīng)緯度坐標(biāo)

?簡單實(shí)例如下:文章來源地址http://www.zghlxwxcb.cn/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. 某個(gè)點(diǎn)是否在另外一個(gè)閉合的空間內(nèi)
        // isInside();

        // 2. 計(jì)算某個(gè)閉合的空間的中心的的位置
        // calcCentPoint();

        //3. 已知兩個(gè)點(diǎn)的經(jīng)緯度,計(jì)算他們之間的距離
        // pointDistance();

        // 4. 已知某點(diǎn)的經(jīng)緯度坐標(biāo),計(jì)算其他點(diǎn)的經(jīng)緯度坐標(biāo)
        calcCoordinate();

        // 5.


    }

    // 1. 某個(gè)點(diǎn)是否在另外一個(gè)閉合的空間內(nèi)
    static void isInside() throws ParseException{
        // 創(chuàng)建 GeometryFactory 對象
        GeometryFactory geometryFactory = new GeometryFactory();

        // 創(chuàng)建點(diǎn)對象
        Coordinate pointCoord = new Coordinate(2.0, 2.0);
        Point point = geometryFactory.createPoint(pointCoord);

        // 創(chuàng)建多邊形對象
        WKTReader wktReader = new WKTReader(geometryFactory);
        Polygon polygon = (Polygon) wktReader.read("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))");

        // 判斷點(diǎn)是否在多邊形內(nèi)部
        boolean isInside = polygon.contains(point);

        // 輸出結(jié)果
        System.out.println("Point: " + point.toText());
        System.out.println("Polygon: " + polygon.toText());
        System.out.println("Is inside: " + isInside);
    }


    // 2. 計(jì)算某個(gè)閉合的空間的中心的的位置
    static void calcCentPoint(){
        int pointCount = 5;
        Coordinate[] coordinates = new Coordinate[pointCount];

        // 填充Coordinate數(shù)組
        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);

        // 創(chuàng)建Polygon對象
        GeometryFactory factory = new GeometryFactory();
        Polygon polygon = factory.createPolygon(coordinates);
        polygon.getDimension();

        // 計(jì)算中心點(diǎn)坐標(biāo)
        Coordinate centerCoordinate = polygon.getCentroid().getCoordinate();
        double centerX = centerCoordinate.x;
        double centerY = centerCoordinate.y;

        // 輸出結(jié)果
        System.out.println("Center point: (" + centerX + ", " + centerY + ")");
    }


    //3. 已知兩個(gè)點(diǎn)的經(jīng)緯度,計(jì)算他們之間的距離
    static void pointDistance(){
        double lon1 = 115.8575; // 第一個(gè)點(diǎn)的經(jīng)度
        double lat1 = 28.6829;  // 第一個(gè)點(diǎn)的緯度
        double lon2 = 116.4074; // 第二個(gè)點(diǎn)的經(jīng)度
        double lat2 = 39.9042;  // 第二個(gè)點(diǎn)的緯度

        // 創(chuàng)建GeometryFactory對象
        GeometryFactory factory = new GeometryFactory();

        // 創(chuàng)建Coordinate對象
        Coordinate coordinate1 = new Coordinate(lon1, lat1);
        Coordinate coordinate2 = new Coordinate(lon2, lat2);

        // 創(chuàng)建Point對象
        Point point1 = factory.createPoint(coordinate1);
        Point point2 = factory.createPoint(coordinate2);

        // 計(jì)算兩點(diǎn)之間的距離
        double distance = point1.distance(point2);


        // 輸出結(jié)果
        System.out.println("Distance between the two points: " + distance);
    }



    /
    // 4. 已知某點(diǎn)的經(jīng)緯度坐標(biāo),計(jì)算其他點(diǎn)的經(jīng)緯度坐標(biāo)
    static void calcCoordinate() {
        // 假設(shè)已知的參考點(diǎn)的坐標(biāo)
        double lat1 = 40.7128;   // 參考點(diǎn)的緯度
        double lon1 = -74.0060;  // 參考點(diǎn)的經(jīng)度

        // 假設(shè)要計(jì)算的距離和方向
        double distanceInMeters = 1000;  // 距離為 1000 米
        double bearingInDegrees = 45;    // 方向?yàn)?45 度

        // 創(chuàng)建參考點(diǎn)的坐標(biāo)對象
        Coordinate referenceCoord = new Coordinate(lon1, lat1);

        // 計(jì)算目標(biāo)點(diǎn)的坐標(biāo)
        Coordinate targetCoord = calculateCoordinate(referenceCoord, distanceInMeters, bearingInDegrees);

        // 打印目標(biāo)點(diǎn)的經(jīng)緯度
        System.out.println("目標(biāo)點(diǎn)的經(jīng)度:" + targetCoord.x);
        System.out.println("目標(biāo)點(diǎn)的緯度:" + targetCoord.y);
    }

    // 使用 JTS 計(jì)算目標(biāo)坐標(biāo)
    static Coordinate calculateCoordinate(Coordinate referenceCoord, double distance, double bearing) {
        // 將距離轉(zhuǎn)換為度數(shù)
        double distanceInDegrees = Math.toDegrees(distance / 6371000.0); // 假設(shè)地球是一個(gè)球體,半徑為 6371000 米

        // 根據(jù)參考點(diǎn)和距離創(chuàng)建線段對象
        // LengthIndexedLine line = new LengthIndexedLine(new Coordinate[] { referenceCoord });
        GeometryFactory factory = new GeometryFactory();
        Point referencePoint = factory.createPoint(referenceCoord);
        LengthIndexedLine line = new LengthIndexedLine(referencePoint);

        // 在線段上根據(jù)方向和距離計(jì)算目標(biāo)點(diǎn)的索引
        double targetIndex = line.project(referenceCoord) + distanceInDegrees;

        // 根據(jù)目標(biāo)索引獲取目標(biāo)點(diǎn)的坐標(biāo)
        Coordinate targetCoord = line.extractPoint(targetIndex);
        return targetCoord;
    }
}

到了這里,關(guān)于【Turfjs的java版本JTS】前面講了Turfjs可以實(shí)現(xiàn)幾何計(jì)算,空間計(jì)算的功能,如果后端要做這項(xiàng)功能也有類似的類庫,JTS的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Win10十二月更新系統(tǒng)講了什么?

    Win10十二月更新系統(tǒng)講了什么?

    微軟今天凌晨發(fā)布了win10系統(tǒng)12月最新的累積更新補(bǔ)丁,根據(jù)該公司的公告,更新 KB5021233 將版本號增加到構(gòu)建 19042.2364 (20H2)、19043.2364 (21H1)、19044.2364 (21H2) 和 19045.2364 (22H2),并引入了安全修復(fù)程序和以前在 11 月發(fā)布的預(yù)覽更新 KB5020030 中可用的更改15. 一些改進(jìn)包括

    2024年02月10日
    瀏覽(16)
  • JTS:10 Crosses

    JTS:10 Crosses

    版本 org.locationtech.jts:jts-core:1.19.0 鏈接: github 點(diǎn)與線 點(diǎn)與面 線與面 線與線

    2024年02月07日
    瀏覽(19)
  • Java初學(xué)者也可以實(shí)現(xiàn)的圖書系統(tǒng)小練習(xí)

    Java初學(xué)者也可以實(shí)現(xiàn)的圖書系統(tǒng)小練習(xí)

    ? ? ? ?大家好呀,我是小戴?????? ? ? ? ?最近大家不是快期末了嘛,有沒有泡圖書館呀?今天的學(xué)習(xí)內(nèi)容跟圖書館有關(guān),沒錯(cuò),就是圖書管理系統(tǒng),但是目前所學(xué)知識水平有限,這是一個(gè)很簡單的圖書系統(tǒng)小練習(xí)。不要急,我們的 目的是在于如何使用已知學(xué)過的知識進(jìn)

    2023年04月09日
    瀏覽(21)
  • Java原來可以這么玩!CV實(shí)現(xiàn)多張圖片生成視頻

    Java原來可以這么玩!CV實(shí)現(xiàn)多張圖片生成視頻

    比如我像將幾張圖片變成一個(gè)視頻的形式發(fā)不到短視頻平臺,雖然短視頻平臺也有上傳圖片變成視頻的功能,但是我想要具體控制每張圖片顯示多久后切換到下一個(gè)圖片,短視頻平臺目前無法實(shí)現(xiàn),于是乎,我用java代碼實(shí)現(xiàn)了這個(gè)功能。 生成視頻展示 多張圖片生成視頻 Ja

    2024年01月17日
    瀏覽(26)
  • Unity如何實(shí)現(xiàn)讓Sprite和UI顯示在模型前面而不會(huì)被模型遮擋

    Unity如何實(shí)現(xiàn)讓Sprite和UI顯示在模型前面而不會(huì)被模型遮擋

    在不使用Shader的情況下實(shí)現(xiàn)UI顯示在模型前面方法 ps:本人只做記筆記使用 使用前: 使用后: 1.首先需要把顯示的UI或者Sprite的層級設(shè)置為UI層或者你自定義的層 2.創(chuàng)建倆個(gè)攝像機(jī) 3.主攝像機(jī)不變,需要渲染的層級依舊是Everything 次攝像機(jī)的CullingMask只選擇UI或者自定義層,以

    2024年02月22日
    瀏覽(61)
  • JTS: 14 LineMerger 多線合并

    版本 org.locationtech.jts:jts-core:1.19.0 鏈接: github 代碼

    2024年02月06日
    瀏覽(13)
  • JTS空間坐標(biāo)Geometry使用

    JTS空間坐標(biāo)Geometry使用

    Geomtery子類圖 創(chuàng)建Geometry Geometry轉(zhuǎn)換坐標(biāo)系 Geometry方法 Geometry 與 WKT 轉(zhuǎn)換 pom.xml

    2023年04月22日
    瀏覽(18)
  • java實(shí)現(xiàn)連接遠(yuǎn)程服務(wù)器,并可以執(zhí)行shell命令

    你可以使用Java中的SSH庫來連接遠(yuǎn)程服務(wù)器并執(zhí)行shell命令。下面是一個(gè)簡單的示例代碼: 請注意替換 your_host , your_username , your_password 和 your_shell_command 為實(shí)際的遠(yuǎn)程服務(wù)器信息和要執(zhí)行的shell命令。該示例代碼使用JSch庫來建立SSH連接并執(zhí)行命令。

    2024年01月20日
    瀏覽(33)
  • Java連接數(shù)據(jù)庫(學(xué)生管理系統(tǒng)案例,可以實(shí)現(xiàn)增刪改查)

    Java連接數(shù)據(jù)庫(學(xué)生管理系統(tǒng)案例,可以實(shí)現(xiàn)增刪改查)

    首先,需要做一個(gè)準(zhǔn)備工作 ——下載jar包,這個(gè)包是用來支持?jǐn)?shù)據(jù)庫的連接的 官網(wǎng)的下載鏈接:MySQL :: Download Connector/J 點(diǎn)擊鏈接進(jìn)入頁面: 選擇畫紅框的下載按鈕。 與此同時(shí),打開IDEA開發(fā)工具,在當(dāng)前項(xiàng)目目錄下新建一個(gè)lib目錄文件夾用來存放第三方j(luò)ar包,這樣做方便管

    2024年02月07日
    瀏覽(27)
  • Java實(shí)現(xiàn)簡單的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日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包