三行Java代碼實(shí)現(xiàn)計(jì)算多邊形的幾何中心點(diǎn)
前言
因?yàn)楣ぷ髟O(shè)計(jì)到gis相關(guān)的內(nèi)容,需要計(jì)算采煤機(jī)工作面的中心點(diǎn)。如果套用數(shù)學(xué)的計(jì)算公式,用java去實(shí)現(xiàn),太多麻煩還費(fèi)時(shí)比較久,于是我找到j(luò)ava幾何計(jì)算的工具包,幾行代碼就能求出多變形的中心,簡(jiǎn)直yyds!!!
廢話不多說(shuō)直接上代碼,然后再慢慢講解
示例代碼
首先再maven項(xiàng)目的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>
下面代碼以四邊形為例,計(jì)算面積和中心點(diǎn)
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()); //輸出中心點(diǎn) System.out.println( polygon.getCentroid()); //輸出多邊形面積 System.out.println( polygon.getArea()); }
demo2
public static void main(String[] args) { GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); //最后一個(gè)點(diǎn)和第一個(gè)相同完成多邊形的線段閉合 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); //輸出中心點(diǎn) System.out.println( polygon.getCentroid()); //輸出多邊形面積 System.out.println( polygon.getArea()); }
以上代碼值得注意的有兩點(diǎn):
1.坐標(biāo)點(diǎn)的順序必須保證是幾何圖形的相鄰點(diǎn),順時(shí)針相連或者逆時(shí)針都可以。
2.最后要完成閉合,閉合的方式即最后一個(gè)點(diǎn)必須和第一個(gè)點(diǎn)相同。
如圖所示,順序按照A->B>C>D,且最后閉合點(diǎn)為A點(diǎn),即開(kāi)始和最后輸入點(diǎn)為A點(diǎn)
除了四邊形形,五邊形,六邊形,不規(guī)則多邊形,都可以計(jì)算。方法和原理一樣。
輸出結(jié)果實(shí)例
demo1輸出
demo2輸出
到此這篇關(guān)于三行Java代碼實(shí)現(xiàn)計(jì)算多邊形的幾何中心點(diǎn)的文章就介紹到這了,更多相關(guān)Java計(jì)算多邊形的幾何中心點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解mybatis 批量更新數(shù)據(jù)兩種方法效率對(duì)比
這篇文章主要介紹了詳解mybatis 批量更新數(shù)據(jù)兩種方法效率對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02使用Spring boot標(biāo)記一個(gè)方法過(guò)時(shí)
這篇文章主要介紹了使用Spring boot標(biāo)記一個(gè)方法過(guò)時(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12基于mybatis注解動(dòng)態(tài)sql中foreach工具的方法
這篇文章主要介紹了mybatis注解動(dòng)態(tài)sql中foreach工具方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11MyBatis配置的應(yīng)用與對(duì)比jdbc的優(yōu)勢(shì)
這篇文章主要介紹了MyBatis配置的使用與相對(duì)于jdbc的優(yōu)勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07SpringSecurity框架下實(shí)現(xiàn)CSRF跨站攻擊防御的方法
CSRF是一種網(wǎng)絡(luò)攻擊方式,也可以說(shuō)是一種安全漏洞,這種安全漏洞在web開(kāi)發(fā)中廣泛存在。這篇文章主要介紹了SpringSecurity框架下實(shí)現(xiàn)CSRF跨站攻擊防御,需要的朋友可以參考下2019-12-12基于params、@PathVariabl和@RequestParam的用法與區(qū)別說(shuō)明
這篇文章主要介紹了方法參數(shù)相關(guān)屬性params、@PathVariabl和@RequestParam用法與區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08解決Eclipse中java文件的圖標(biāo)變成空心J的問(wèn)題
這篇文章主要介紹了解決Eclipse中java文件的圖標(biāo)變成空心J的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01SpringMVC整合kinfe4j及問(wèn)題解決分析
這篇文章主要為大家介紹了SpringMVC整合kinfe4j及問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Idea如何關(guān)閉或開(kāi)啟引用提示Usages和Annotations
這篇文章主要介紹了Idea如何關(guān)閉或開(kāi)啟引用提示Usages和Annotations問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01