前言:因为工作设计到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计算四边形中心点和两条线段交点算法_洛阳泰山的博客-CSDN博客_求四边形中心点

手写GIS二三维地理空间几何计算GeoTools工具类_洛阳泰山的博客-CSDN博客_geotools 空间计算

已知直角三角形两点坐标和一边长,求另一点坐标 | 三角函数_洛阳泰山的博客-CSDN博客

注:未经本人同意,文章禁止转载!!!

仅仅三行JAVA代码计算多边形的几何中心点相关推荐

  1. 用Java代码计算磁盘里的文件大小

    用Java代码计算磁盘里的文件大小 原理 代码展示 总结 原理 拿到一个文件后我们需要先判断文件是不是标准文件调用isFile()方法,如果是标准文件直接调用length()方法求文件大小,不是标准文 ...

  2. Java代码计算一元二次方程

    老哥们,别白嫖,点个赞吧,秋梨膏 1.0版本代码如下: (该版本的计算并不完善,例如输入1,2,1它会提示你"该方程中的数据进行了开平方,所以不太准确",这是个意料之外的错误,以后 ...

  3. java如何算log_用java代码计算Log(a)b

    1 java标准包提供了自然对数的计算方法,2 其他的对数计算可以转换为自然对数的计算. Sun的J2SE提供了一个计算自然对数方法--double java.lang.Math.log(double ...

  4. JAVA代码计算1900年到所求年份共多少天。

    import java.util.Scanner; public class test11{ public static void main(String[]args){ Scanner in=new ...

  5. 用java代码计算BMI指数

    代码如下 输出结果如下

  6. java代码实现二元一次方程

    前言 最近和朋友打羽毛球,6个人参加了羽毛球活动,打完了要计算平均每个人的费用,如果每次都用纸和笔来算就会比较麻烦,所以我就写了一个Android的程序来实现自动计算的功能. 用纸和笔计算二元一次方程 ...

  7. java JLabel改变大小后如何刷新_到底一行java代码是如何在计算机上执行的

    不知道你是否思考过,每次我们在IDEA中右键Run Application启动主方法,假如程序运行正常,控制台也打印出了你所要打印的信息,在这个过程中你知道这台计算机上那些硬件及其软件都是以什么样的方 ...

  8. excel总行数 java_计算Excel工作表列中的行数(提供的Java代码)

    参考我之前的问题 How to calculate number of rows in a column of Excel document using Java,我能够计算给定表格中的总列数.现在, ...

  9. java 根据圆心计算圆弧上点的经纬度_【控制测量学】-高斯投影正算公式以及java代码

    正算公式(将经纬度转化为坐标): java代码(附有源代码和修改后的代码): 源代码: /** * 由经纬度反算成高斯投影坐标 * * @param longitude * @param latitu ...

最新文章

  1. 数字经济时代,什么是关键资源?(算力篇)
  2. nanomsg(ZeroMQ with C)
  3. 【计算机网络】分层结构
  4. ThinkPHP3.2.3执行页面循环案例代码(部分)
  5. 【转】Windows消息投递流程:WM_COMMAND消息流程
  6. python 短视频_短视频篇 | Python 带你进行短视频二次创作
  7. 2021系统架构设计师论文真题
  8. 二进制安装MySQL以及密码破解
  9. 动态规划——最大连续子序列和
  10. Python爬虫6:使用API及实例
  11. 权限控制-Shiro
  12. [渝粤教育] 西南科技大学 财务管理与分析 在线考试复习资料(1)
  13. 上海邮政EMS海关清关(个人) 流程
  14. PJ331 PJ501超小型封装PFM DC/DC升压稳压器
  15. java计算机毕业设计网上扶贫农产品销售系统源代码+数据库+系统+lw文档
  16. Cisco Viptela SD-WAN 基本部署
  17. 我国网络安全现状怎么样?如何应对网络安全风险?
  18. 使用ResNet18实现CIFAR10数据集的训练
  19. 微信内 H5 页面自定义分享
  20. 简历上面的技术名词应该怎么写?

热门文章

  1. 微型计算机数据采集系统,PC机数据采集系统设计 完整版.doc
  2. 你需要知道的13个有用的Python片段
  3. 机电设备故障诊断数据集
  4. 计算机综合考试考什么,计算机考博综合考试考什么
  5. HTTP与Socks5的区别是什么?
  6. rhino 的挤出曲线命令
  7. k8s还能这么玩?快速上手物联网应用的容器开发
  8. 天河二号属于微型计算机吗,我国自行生产的天河二号计算机属于
  9. 华为S5720之瞒天过海------查看配置及备份配置信息
  10. 语义分割-Unsupervised Domain Adaptation in Semantic Segmentation:a Review语义分割中的无监督领域自适应:综述