因为工作设计到gis相关的内容,需要计算采煤机工作面的中心点。如果套用数学的计算公式,用java去实现,太多麻烦还费时比较久,于是我找到java几何计算的工具包,几行代码就能求出多变形的中心,简直yyds!!!
对于任意一个凸多边形,我们可以使用以下的方法计算其几何中心点。
首先,定义多边形的每个顶点为A1, A2, ..., An,其中n表示多边形的边数。
然后,我们可以利用以下的公式来计算几何中心点的横坐标(x)和纵坐标(y):
横坐标的计算公式:
x = (A1x + A2x + ... + Anx) / n
纵坐标的计算公式:
y = (A1y + A2y + ... + Any) / n
其中,Aix表示第i个顶点的横坐标,Aiy表示第i个顶点的纵坐标。
通过这两个公式,我们可以将所有顶点的坐标相加并除以边数n得到几何中心点的坐标。例如,如果一个三角形的顶点分别为A(1, 2),B(4, 6),C(7, 3),则可以进行如下的计算:
x = (1 + 4 + 7) / 3 = 4 y = (2 + 6 + 3) / 3 = 3.67
因此,该三角形的几何中心点为坐标(4, 3.67)。
需要注意的是,以上的方法只适用于凸多边形。对于非凸多边形,可以通过将其分解为多个凸多边形,再计算每个凸多边形的几何中心点,最后取所有几何中心点的均值来近似表示整个非凸多边形的几何中心点。
此外,还有其他方法可以用于计算几何中心点,例如使用积分或质心定理等。但以上的方法是最简单且常用的计算几何中心点的方式之一。
总结起来,计算几何中心点的步骤如下:
首先再maven项目的pom文件中引入依赖
-
-
1.8 -
3.8.1 -
2.1.16.RELEASE -
2.6.0.RELEASE -
Cairo-SR8 -
UTF-8 -
yyyyMMddHHmmss -
28-SNAPSHOT -
-
-
-
org.geotools -
gt-main -
${geotools.version} -
下面代码以四边形为例,计算面积和中心点
- 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());
-
- }
- 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点

除了四边形形,五边形,六边形,不规则多边形,都可以计算。方法和原理一样。


文章创作不易,还望多多支持。
java计算四边形中心点和两条线段交点算法_洛阳泰山的博客-CSDN博客_求四边形中心点
手写GIS二三维地理空间几何计算GeoTools工具类_洛阳泰山的博客-CSDN博客_geotools 空间计算
已知直角三角形两点坐标和一边长,求另一点坐标 | 三角函数_洛阳泰山的博客-CSDN博客
org.geotools是一个Java编写的开源地理空间类库,提供了一套功能强大的工具和API,用于处理地理空间数据。下面是关于org.geotools的一些详细解释:
功能丰富:org.geotools提供了广泛的功能,涵盖了地理空间数据的读取、写入、转换、分析和可视化等方面。它支持多种常见的矢量和栅格数据格式,并提供了各种操作符和方法来处理和操作这些数据。
数据格式支持:org.geotools支持多种常见的地理空间数据格式,如ESRI Shapefile、GeoJSON、KML、GML等。它可以轻松读取和写入这些格式的数据,使用户能够与不同格式的地理空间数据进行交互。
投影转换:org.geotools提供了强大的投影转换功能,可以实现不同坐标系之间的转换。它支持常见的投影系统,如经纬度坐标系、UTM投影、Web墨卡托投影等,使用户能够在不同投影系统下进行准确的空间分析和计算。
空间查询和分析:org.geotools提供了丰富的空间查询和分析功能,包括点线面的空间关系判断、缓冲区分析、空间叠加分析、空间插值等。用户可以通过这些功能进行地理数据的查询、筛选和分析,从而得到需要的结果。
可视化和渲染:org.geotools提供了强大的可视化和渲染功能,可以将地理空间数据以图形方式展示出来。它支持符号化、颜色映射、标注、图层叠加等操作,使用户能够创建漂亮且具有交互性的地图应用程序。
总之,org.geotools是一个功能强大且易于使用的地理空间类库,它为Java开发者提供了处理和分析地理空间数据的工具和API,广泛应用于GIS、地图制作、空间数据分析等领域。
注:未经本人同意,文章禁止转载!!!