/** * @param multiPolygon * @throws XMLStreamException * @throws UnknownCRSException * @throws TransformationException */ public void exportMultiPolygon( MultiPolygon multiPolygon ) throws XMLStreamException, TransformationException, UnknownCRSException { startGeometry( "MultiPolygon", multiPolygon ); for ( Polygon polygon : multiPolygon ) { if ( polygon.getId() != null && referenceExportStrategy.isObjectExported( polygon.getId() ) ) { writer.writeEmptyElement( "gml", "polygonMember", GML21NS ); writer.writeAttribute( "xlink", XLNNS, "href", "#" + polygon.getId() ); } else { writer.writeStartElement( "gml", "polygonMember", GML21NS ); exportPolygon( polygon ); writer.writeEndElement(); } } writer.writeEndElement(); // </gml:MultiPolygon> }
private Polygon transform( Polygon polygon, Transformation trans ) throws TransformationException { Ring exterior = polygon.getExteriorRing(); LinearRing tExteriorRing = transform( exterior, trans ); List<Ring> interiorRings = polygon.getInteriorRings(); List<Ring> tInteriorRings = new ArrayList<Ring>( interiorRings == null ? 0 : interiorRings.size() ); if ( interiorRings != null && !interiorRings.isEmpty() ) { for ( Ring interior : interiorRings ) { if ( interior != null ) { tInteriorRings.add( transform( interior, trans ) ); } } } return geomFactory.createPolygon( polygon.getId(), getTargetCRS(), tExteriorRing, tInteriorRings ); }
linearizedInteriorRings.add( (Ring) curveLinearizer.linearize( interiorRing, crit ) ); linearizedSurface = (T) geomFac.createPolygon( polygon.getId(), polygon.getCoordinateSystem(), linearizedExteriorRing, linearizedInteriorRings ); break;