三行Java代碼實現(xiàn)計算多邊形的幾何中心點
前言
因為工作設計到gis相關的內容,需要計算采煤機工作面的中心點。如果套用數(shù)學的計算公式,用java去實現(xiàn),太多麻煩還費時比較久,于是我找到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點

除了四邊形形,五邊形,六邊形,不規(guī)則多邊形,都可以計算。方法和原理一樣。
輸出結果實例
demo1輸出

demo2輸出

到此這篇關于三行Java代碼實現(xiàn)計算多邊形的幾何中心點的文章就介紹到這了,更多相關Java計算多邊形的幾何中心點內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
利用JAVA反射,讀取數(shù)據(jù)庫表名,自動生成對應實體類的操作
這篇文章主要介紹了利用JAVA反射,讀取數(shù)據(jù)庫表名,自動生成對應實體類的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Java中用Mybatis插入mysql報主鍵重復的解決方案
這篇文章主要介紹了Java中用Mybatis插入mysql報主鍵重復的解決方案,具有很好的參考價值,希望對大家有所幫助。2023-02-02
SpringBoot使用AES對JSON數(shù)據(jù)加密和解密的實現(xiàn)方法
這篇文章主要介紹了SpringBoot使用AES對JSON數(shù)據(jù)加密和解密的實現(xiàn)方法,文章通過代碼示例介紹的非常詳細,對我們的學習或工作有一定的幫助,需要的朋友可以參考下2023-08-08
mybatis框架order by作為參數(shù)傳入時失效的解決
這篇文章主要介紹了mybatis框架order by作為參數(shù)傳入時失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Fluent Mybatis實際開發(fā)中的優(yōu)勢對比
本文給大家介紹如何通過IQuery和IUpdate定義強大的動態(tài)SQL語句,給大家分享Fluent Mybatis實際開發(fā)中的優(yōu)勢講解,感興趣的朋友一起看看吧2021-08-08
Springboot如何基于assembly服務化實現(xiàn)打包
這篇文章主要介紹了Springboot如何基于assembly服務化實現(xiàn)打包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06

