private void traverseSolid( Solid s ) { SolidType st = s.getSolidType(); switch ( st ) { case CompositeSolid: { for ( Solid member : ( (CompositeSolid) s ) ) { traverse( member ); } break; } case Solid: { if ( s.getExteriorSurface() != null ) { traverse( s.getExteriorSurface() ); } for ( Surface inner : s.getInteriorSurfaces() ) { traverse( inner ); } break; } } }
public Measure getArea( Unit requestedBaseUnit ) { return getReferencedObject().getArea( requestedBaseUnit ); }
@Override public int getCoordinateDimension() { return memberSolids.get( 0 ).getCoordinateDimension(); }
private Solid transform( Solid solid, Transformation trans ) throws TransformationException { SolidType type = solid.getSolidType(); Solid result = null; switch ( type ) { case CompositeSolid: result = transform( (CompositeSolid) solid, trans ); break; case Solid: Surface ext = solid.getExteriorSurface(); Surface tExt = transform( ext, trans ); List<Surface> inter = solid.getInteriorSurfaces(); List<Surface> tInter = new LinkedList<Surface>(); if ( inter != null && !inter.isEmpty() ) { for ( Surface in : inter ) { if ( in != null ) { Surface tIn = transform( in, trans ); tInter.add( tIn ); } } } result = geomFactory.createSolid( solid.getId(), getTargetCRS(), tExt, tInter ); break; } return result; }
@Override public Surface getExteriorSurface() { return getReferencedObject().getExteriorSurface(); }
/** * * @param geometry * @param writer */ public void writeSolid( Solid geometry, Writer writer ) { switch ( geometry.getSolidType() ) { case Solid: // TODO throw new UnsupportedOperationException( "Handling solids is not implemented yet." ); case CompositeSolid: throw new UnsupportedOperationException( "Handling compositeSolids is not implemented yet." ); } }
/** * Exporting a composite solid via the XMLStreamWriter given when the class was constructed * * @param compositeSolid * the {@link CompositeSolid} object * @throws XMLStreamException * if an error occured writing to the xml stream * @throws UnknownCRSException * @throws TransformationException */ @Override public void exportCompositeSolid( CompositeSolid compositeSolid ) throws XMLStreamException, UnknownCRSException, TransformationException { startGeometry( "CompositeSolid", compositeSolid ); for ( Solid solidMember : compositeSolid ) { if ( solidMember.getId() != null && referenceExportStrategy.isObjectExported( solidMember.getId() ) ) { writer.writeEmptyElement( gmlNs, "solidMember" ); writer.writeAttribute( XLNNS, "href", "#" + solidMember.getId() ); } else { referenceExportStrategy.addExportedId( solidMember.getId() ); writer.writeStartElement( gmlNs, "solidMember" ); exportSolid( solidMember ); writer.writeEndElement(); } } writer.writeEndElement(); }
@Override public List<Surface> getInteriorSurfaces() { return getReferencedObject().getInteriorSurfaces(); } }
solid.setType( type ); solid.setProperties( props );
public Measure getVolume( Unit requestedBaseUnit ) { return getReferencedObject().getVolume( requestedBaseUnit ); }
/** * Map the given geometry to a {@link GeometryQualityModel} by extracting it's 'surfacepatches'. * * @param geom * to extract the geometries from. * @param qm * to add the extracted geometries to. * @param min * will contain the minimum of all geometries of the given geometry * @param max * will contain the maximum of all geometries in the given geometry */ private void extractGeometries( Solid geom, GeometryQualityModel qm, double[] min, double[] max ) { // gml 3.1: if in eucledian 3d space the exterior will be a Composite surface. CompositeSurface exterior = (CompositeSurface) geom.getExteriorSurface(); extractGeometries( exterior, qm, min, max ); }
public SolidType getSolidType() { return getReferencedObject().getSolidType(); }
for ( Solid solid : multiSolid ) { writer.writeStartElement( gmlNs, "solidMember" ); if ( solid.getId() != null && referenceExportStrategy.isObjectExported( solid.getId() ) ) { writer.writeAttribute( XLNNS, "href", "#" + solid.getId() ); } else if ( solid instanceof CompositeSolid ) { exportCompositeSolid( (CompositeSolid) solid );
public void exportSolid( Solid solid ) throws XMLStreamException, UnknownCRSException, TransformationException { switch ( solid.getSolidType() ) { Surface exSurface = solid.getExteriorSurface(); writer.writeStartElement( gmlNs, "exterior" ); exportSurface( exSurface ); writer.writeEndElement(); for ( Surface inSurface : solid.getInteriorSurfaces() ) { writer.writeStartElement( gmlNs, "interior" ); exportSurface( inSurface );