@Override public int getCoordinateDimension() { return patches.get( 0 ).getCoordinateDimension(); }
@Override public int getCoordinateDimension() { return patches.get( 0 ).getCoordinateDimension(); }
@Override public int getCoordinateDimension() { return patches.get( 0 ).getCoordinateDimension(); }
private void writePolygonPatch( String id, ICRS crs, PrecisionModel pm, PolygonPatch polyPatch, Writer writer ) throws IOException { PolygonPatchType type = polyPatch.getPolygonPatchType(); Polygon poly = null; switch ( type ) { case POLYGON_PATCH: case RECTANGLE: case TRIANGLE: poly = new DefaultPolygon( id, crs, pm, polyPatch.getExteriorRing(), polyPatch.getInteriorRings() ); break; } writePolygonWithoutPrefix( poly, writer ); }
/** * Returns a linearized version (i.e. a {@link PolygonPatch} that only uses {@link LinearRing}s as boundaries) of * the given {@link PolygonPatch}. * * @param patch * @param crit * determines the interpolation quality / number of interpolation points * @return {@link PolygonPatch} that only uses {@link LinearRing}s as boundaries */ public PolygonPatch linearize( PolygonPatch patch, LinearizationCriterion crit ) { Ring exteriorRing = patch.getExteriorRing(); Ring linearizedExteriorRing = null; if ( exteriorRing != null ) { linearizedExteriorRing = (Ring) curveLinearizer.linearize( exteriorRing, crit ); } List<Ring> interiorRings = patch.getInteriorRings(); List<Ring> linearizedInteriorRings = new ArrayList<Ring>( interiorRings.size() ); for ( Ring interiorRing : interiorRings ) { linearizedInteriorRings.add( (Ring) curveLinearizer.linearize( interiorRing, crit ) ); } return geomFac.createPolygonPatch( linearizedExteriorRing, linearizedInteriorRings ); } }
switch ( surfacePatch.getSurfacePatchType() ) { switch ( gridded.getGriddedSurfaceType() ) {
private void exportCylinder( Cylinder cylinder ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( gmlNs, "Cylinder" ); writer.writeAttribute( "horizontalCurveType", "circularArc3Points" ); writer.writeAttribute( "verticalCurveType", "linear" ); for ( int i = 0; i < cylinder.getNumRows(); i++ ) { writer.writeStartElement( gmlNs, "row" ); export( cylinder.getRow( i ), 3 ); // srsDimension attribute in posList set to 3 writer.writeEndElement(); } writer.writeStartElement( gmlNs, "rows" ); writer.writeCharacters( String.valueOf( cylinder.getNumRows() ) ); writer.writeEndElement(); writer.writeStartElement( gmlNs, "columns" ); writer.writeCharacters( String.valueOf( cylinder.getNumColumns() ) ); writer.writeEndElement(); writer.writeEndElement(); }
private void exportSphere( Sphere sphere ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( gmlNs, "Sphere" ); writer.writeAttribute( "horizontalCurveType", "circularArc3Points" ); writer.writeAttribute( "verticalCurveType", "circularArc3Points" ); for ( int i = 0; i < sphere.getNumRows(); i++ ) { writer.writeStartElement( gmlNs, "row" ); export( sphere.getRow( i ), 3 ); // srsDimension attribute in posList set to 3 writer.writeEndElement(); } writer.writeStartElement( gmlNs, "rows" ); writer.writeCharacters( String.valueOf( sphere.getNumRows() ) ); writer.writeEndElement(); writer.writeStartElement( gmlNs, "columns" ); writer.writeCharacters( String.valueOf( sphere.getNumColumns() ) ); writer.writeEndElement(); writer.writeEndElement(); }
private void exportCone( Cone cone ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( gmlNs, "Cone" ); writer.writeAttribute( "horizontalCurveType", "circularArc3Points" ); writer.writeAttribute( "verticalCurveType", "linear" ); for ( int i = 0; i < cone.getNumRows(); i++ ) { writer.writeStartElement( gmlNs, "row" ); export( cone.getRow( i ), 3 ); // srsDimension attribute in posList set to 3 writer.writeEndElement(); } writer.writeStartElement( gmlNs, "rows" ); writer.writeCharacters( String.valueOf( cone.getNumRows() ) ); writer.writeEndElement(); writer.writeStartElement( gmlNs, "columns" ); writer.writeCharacters( String.valueOf( cone.getNumColumns() ) ); writer.writeEndElement(); writer.writeEndElement(); }
@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 List<SurfacePatch> transform( List<? extends SurfacePatch> sPatches, Transformation trans ) throws TransformationException { List<SurfacePatch> result = new ArrayList<SurfacePatch>( sPatches.size() ); for ( SurfacePatch patch : sPatches ) { SurfacePatchType pT = patch.getSurfacePatchType(); SurfacePatch tsp = null; switch ( pT ) { case GRIDDED_SURFACE_PATCH: tsp = transform( (GriddedSurfacePatch) patch, trans ); break; case POLYGON_PATCH: tsp = transform( (PolygonPatch) patch, trans ); break; } result.add( tsp ); } return result; }
void render( TextStyling styling, Font font, String text, Surface surface ) { for ( SurfacePatch patch : surface.getPatches() ) { if ( patch instanceof PolygonPatch ) { PolygonPatch polygonPatch = (PolygonPatch) patch; for ( Curve curve : polygonPatch.getBoundaryRings() ) { render( styling, font, text, curve ); } } else { throw new IllegalArgumentException( "Cannot render non-planar surfaces." ); } } }
private void exportRectangle( Rectangle rectangle ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( gmlNs, "Rectangle" ); writer.writeStartElement( gmlNs, "exterior" ); exportRing( rectangle.getExteriorRing() ); writer.writeEndElement(); writer.writeEndElement(); }
private void exportTriangle( Triangle triangle ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( gmlNs, "Triangle" ); writer.writeStartElement( gmlNs, "exterior" ); exportRing( triangle.getExteriorRing() ); writer.writeEndElement(); writer.writeEndElement(); }
private void exportPolygonPatch( PolygonPatch polygonPatch ) throws XMLStreamException, UnknownCRSException, TransformationException { switch ( polygonPatch.getPolygonPatchType() ) { case POLYGON_PATCH: writer.writeStartElement( gmlNs, "PolygonPatch" ); writer.writeStartElement( gmlNs, "exterior" ); exportRing( polygonPatch.getExteriorRing() ); writer.writeEndElement(); for ( Ring ring : polygonPatch.getInteriorRings() ) { writer.writeStartElement( gmlNs, "interior" ); exportRing( ring ); writer.writeEndElement(); } writer.writeEndElement(); break; case TRIANGLE: exportTriangle( (Triangle) polygonPatch ); break; case RECTANGLE: exportRectangle( (Rectangle) polygonPatch ); break; } }
List<? extends SurfacePatch> l = geometry.getPatches(); for ( SurfacePatch p : l ) { switch ( p.getSurfacePatchType() ) { case GRIDDED_SURFACE_PATCH: GriddedSurfacePatch gsp = ( (GriddedSurfacePatch) p ); switch ( gsp.getGriddedSurfaceType() ) { case GRIDDED_SURFACE_PATCH: throw new UnsupportedOperationException( "Handling griddedSurfacePatch is not implemented yet." );
void render( PointStyling styling, Surface surface ) { for ( SurfacePatch patch : surface.getPatches() ) { if ( patch instanceof PolygonPatch ) { PolygonPatch polygonPatch = (PolygonPatch) patch; for ( Curve curve : polygonPatch.getBoundaryRings() ) { curve.setCoordinateSystem( surface.getCoordinateSystem() ); renderer.render( styling, curve ); } } else { throw new IllegalArgumentException( "Cannot render non-planar surfaces." ); } } }
@Override public int getCoordinateDimension() { return patches.get( 0 ).getCoordinateDimension(); }
void render( LineStyling styling, Surface surface ) { for ( SurfacePatch patch : surface.getPatches() ) { if ( patch instanceof PolygonPatch ) { PolygonPatch polygonPatch = (PolygonPatch) patch; for ( Curve curve : polygonPatch.getBoundaryRings() ) { if ( curve.getCoordinateSystem() == null ) { curve.setCoordinateSystem( surface.getCoordinateSystem() ); } renderer.render( styling, curve ); } } else { throw new IllegalArgumentException( "Cannot render non-planar surfaces." ); } } }