Java Geotools计算所需的两个几何图形之间的相交面积

Java Geotools计算所需的两个几何图形之间的相交面积,java,geometry,polygon,geotools,Java,Geometry,Polygon,Geotools,我是Geotools的新手,我创建了两个几何体(例如两个多边形),我想计算其中一个几何体上相交区域的百分比 //First polygon GeometryFactory geometryFactory1 = JTSFactoryFinder.getGeometryFactory(); Coordinate[] coords1 = new Coordinate[] {new Coordinate(4, 0), new Coordi

我是Geotools的新手,我创建了两个几何体(例如两个多边形),我想计算其中一个几何体上相交区域的百分比

    //First polygon
        GeometryFactory geometryFactory1 = JTSFactoryFinder.getGeometryFactory();

        Coordinate[] coords1  =
           new Coordinate[] {new Coordinate(4, 0), new Coordinate(2, 2),
                             new Coordinate(4, 4), new Coordinate(6, 2), new Coordinate(4, 0) };

        LinearRing ring1 = geometryFactory.createLinearRing( coords );
        LinearRing holes[] = null; 
        Polygon polygon1 = geometryFactory.createPolygon(ring1, holes );
    // Second polygon
        GeometryFactory geometryFactory2 = JTSFactoryFinder.getGeometryFactory();

        Coordinate[] coords2  =
           new Coordinate[] {new Coordinate(2, 0), new Coordinate(2, 2),
                             new Coordinate(1, 1), new Coordinate(4, 2), new Coordinate(2, 0) };

        LinearRing ring2 = geometryFactory.createLinearRing( coords );
        LinearRing holes[] = null; 
        Polygon polygon2 = geometryFactory.createPolygon(ring2, holes );
    // test if polygon2 is inside polygon1
        boolean test = polygon1.contains(polygon2);

有人知道如何计算polygon1(或圆)中polygon2的百分比吗?有没有算法可以计算几何体之间的相交面积?

您需要先计算相交面积,然后计算其面积,最后计算比率

几何相交=多边形1.相交(多边形2);
双面积比=100.0*intersect.getArea()/polygon2.getArea();
System.out.println(“比率:“+areaRatio+“%”);
也就是说,在计算交点之前,您需要使用
polygon1.isValid()
polygon2.isValid()
确保几何图形有效。
polygon2
的样本数据是自相交的,因此相交操作失败

com.livitSolutions.jts.geom.TopologyException:未找到节点 线串(2.0.0,2.0 2.0)和线串之间的交点( 1.01.0,2.51.5)[(2.0,1.3333,NaN)]