/** * @param linearRing * @throws XMLStreamException * @throws UnknownCRSException * @throws TransformationException */ public void exportLinearRing( Ring linearRing ) throws XMLStreamException, TransformationException, UnknownCRSException { startGeometry( "LinearRing", linearRing ); exportCoordinates( linearRing.getControlPoints() ); writer.writeEndElement(); // </gml:LinearRing> }
@Override public Points getExteriorRingCoordinates() { if ( patches.size() == 1 ) { if ( patches.get( 0 ) instanceof PolygonPatch ) { PolygonPatch patch = (PolygonPatch) patches.get( 0 ); return patch.getExteriorRing().getControlPoints(); } throw new IllegalArgumentException( Messages.getMessage( "SURFACE_IS_NON_PLANAR" ) ); } throw new IllegalArgumentException( Messages.getMessage( "SURFACE_MORE_THAN_ONE_PATCH" ) ); }
@Override public List<Points> getInteriorRingsCoordinates() { List<Points> controlPoints = new ArrayList<Points>(); if ( patches.size() == 1 ) { if ( patches.get( 0 ) instanceof PolygonPatch ) { PolygonPatch patch = (PolygonPatch) patches.get( 0 ); List<Ring> interiorRings = patch.getInteriorRings(); for ( Ring ring : interiorRings ) { controlPoints.add( ring.getControlPoints() ); } } else { throw new IllegalArgumentException( Messages.getMessage( "SURFACE_IS_NON_PLANAR" ) ); } } else { throw new IllegalArgumentException( Messages.getMessage( "SURFACE_MORE_THAN_ONE_PATCH" ) ); } return controlPoints; }
private LinearRing transform( Ring ring, Transformation trans ) throws TransformationException { if ( ring != null ) { // TODO DefaultRing.getAsLineString currently returns an UnsupportedOpertionException // interior.getAsLineString().getControlPoints(), Points cP = ring.getControlPoints(); Points tcP = transform( cP, trans ); return geomFactory.createLinearRing( ring.getId(), getTargetCRS(), tcP ); } return null; }