首頁 > 軟體

三行Java程式碼實現計算多邊形的幾何中心點

2022-10-26 14:02:46

前言

因為工作設計到gis相關的內容,需要計算採煤機工作面的中心點。如果套用數學的計算公式,用java去實現,太多麻煩還費時比較久,於是我找到java幾何計算的工具包,幾行程式碼就能求出多變形的中心,簡直yyds!!!

廢話不多說直接上程式碼,然後再慢慢講解

範例程式碼

首先再maven專案的pom檔案中引入依賴

    <properties>
        <java.version>1.8</java.version>
        <maven.plugin.version>3.8.1</maven.plugin.version>
        <spring.boot.version>2.1.16.RELEASE</spring.boot.version>
        <bladex.project.version>2.6.0.RELEASE</bladex.project.version>
        <spring.platform.version>Cairo-SR8</spring.platform.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
        <geotools.version>28-SNAPSHOT</geotools.version>
    </properties> 
 
    <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-main</artifactId>
            <version>${geotools.version}</version>
     </dependency>

下面程式碼以四邊形為例,計算面積和中心點

demo1

    public static void main(String[] args) {
        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
        CoordinateList coords=new CoordinateList();
        coords.add(new Coordinate(3630789.1856605336, 3.943998533907477E7));
        coords.add(new Coordinate(3630480.3613995733, 3.944116440724006E7));
        coords.add(new Coordinate(3630128.8984496593, 3.944109300504929E7));
        coords.add(new Coordinate(3630408.0016770884, 3.943992775038134E7));
        //閉合
        coords.closeRing();
        Polygon polygon = geometryFactory.createPolygon(coords.toCoordinateArray());
        //輸出中心點
        System.out.println( polygon.getCentroid());
        //輸出多邊形面積
        System.out.println( polygon.getArea());
 
    }

demo2

    public static void main(String[] args) {
        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
        //最後一個點和第一個相同完成多邊形的線段閉合
        Coordinate[] coords = new Coordinate[] {new Coordinate(1, 5),new Coordinate(1, 1),  new Coordinate(5,1) , new Coordinate(5, 5),new Coordinate(1, 5)};
        Polygon polygon = geometryFactory.createPolygon(coords);
        //輸出中心點
        System.out.println( polygon.getCentroid());
        //輸出多邊形面積
        System.out.println( polygon.getArea());
    }

以上程式碼值得注意的有兩點:

1.座標點的順序必須保證是幾何圖形的相鄰點,順時針相連或者逆時針都可以。

2.最後要完成閉合,閉合的方式即最後一個點必須和第一個點相同。

如圖所示,順序按照A->B>C>D,且最後閉合點為A點,即開始和最後輸入點為A點

除了四邊形形,五邊形,六邊形,不規則多邊形,都可以計算。方法和原理一樣。

輸出結果範例

demo1輸出

demo2輸出

到此這篇關於三行Java程式碼實現計算多邊形的幾何中心點的文章就介紹到這了,更多相關Java計算多邊形的幾何中心點內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com