【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; }