我的github

【GeoTools】polygon 转 multipolygon:https://blog.csdn.net/u013517229/article/details/105790292

geotools实现多边形的合并:https://blog.csdn.net/qq_18671415/article/details/111033366

遍历multipolygon中的polygon

https://www.jianshu.com/p/3906e0617cba

   private MultiPolygon multiPolygonDecrypt(MultiPolygon multiPolygon) {
        //获取geometry中的坐标 这里用string的方式保存
        int geoUnm = multiPolygon.getNumGeometries();  // 一个geometry可能含有n个geometry
        Polygon[] polygons = new Polygon[geoUnm];
        for (int j = 0; j < geoUnm; j++) {
            Polygon singleGeo =(Polygon) multiPolygon.getGeometryN(j); //获取其中每一个geometry
            int numGeometries = singleGeo.getNumGeometries();
            LinearRing exteriorRing = (LinearRing)singleGeo.getExteriorRing();
            int numInteriorRing = singleGeo.getNumInteriorRing();
            LinearRing holes[] = new LinearRing[numInteriorRing];
            for (int k = 0; k < numInteriorRing; k++) {
                LinearRing interiorRing = (LinearRing)singleGeo.getInteriorRingN(k);
                holes[k] = interiorRing;
            }
            //int pointCount = singleGeo.getNumPoints();
            Polygon Polygon1 = createPolygon(exteriorRing,holes);
            Polygon1.setSRID(4490);
            //Coordinate[] coords = singleGeo.getCoordinates();
            polygons[j] = Polygon1;
        }

       // MultiPolygon _multiPolygon = new MultiPolygon(polygons);
        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );
        MultiPolygon _multiPolygon = geometryFactory.createMultiPolygon(polygons);
        return _multiPolygon;
    }

通过上面getdefaultgeometry()->multipolygon强制转换,得到的numGeometry个数不正确。难道是构建方式不对?

4.3 构建多边形 
public Polygon createPolygonByWKT() throws ParseException{   
        WKTReader reader = new WKTReader( geometryFactory );   
        Polygon polygon = (Polygon) reader.read("POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))");   
        return polygon;   
    }   
public MultiPolygon createMulPolygonByWKT() throws ParseException{   
        WKTReader reader = new WKTReader( geometryFactory );   
        MultiPolygon mpolygon = (MultiPolygon) reader.read("MULTIPOLYGON(((40 10, 30 0, 40 10, 30 20, 40 10),(30 10, 30 0, 40 10, 30 20, 30 10)))");   
        return mpolygon;   
    }   

 

posted on 2022-08-23 14:27  XiaoNiuFeiTian  阅读(1682)  评论(0编辑  收藏  举报