private void fixReferences( final FeatureCollection fc ) { GMLObjectVisitor visitor = new GMLObjectVisitor() { @Override public boolean visitGeometry( Geometry geom ) { return true; } @Override public boolean visitFeature( Feature feature ) { return true; } @Override public boolean visitReference( Reference<?> ref ) { fixReference( ref ); return true; } @Override public boolean visitObject( GMLObject o ) { return true; } }; new GMLObjectWalker( visitor ).traverse( fc ); }
/** * Transforms the given input stream, and streams the input into the output directly. If a geometry is found, the * geometry is transformed into the target crs. All other events are just copied. * * @param reader * an XMLStream containing some GML Geometries. * @param writer * the output will be written to this writer, the writer have been opened ( * {@link XMLStreamWriter#writeStartDocument()}. No {@link XMLStreamWriter#writeEndDocument()} will be * written as well. * @param gmlVersion * the version of the expected geometries. * @throws XMLStreamException * @throws XMLParsingException * @throws IllegalArgumentException * @throws OutsideCRSDomainException * @throws UnknownCRSException * @throws TransformationException */ public void transform( XMLStreamReader reader, XMLStreamWriter writer, GMLVersion gmlVersion ) throws XMLStreamException, XMLParsingException, IllegalArgumentException, OutsideCRSDomainException, UnknownCRSException, TransformationException { transform( reader, writer, null, gmlVersion, false, null ); }
private void traverseTypedObjectNode( TypedObjectNode node ) { if ( node instanceof GMLObject ) { traverse( (GMLObject) node ); } else if ( node instanceof ElementNode ) { ElementNode generic = (ElementNode) node; for ( TypedObjectNode child : generic.getChildren() ) { traverseTypedObjectNode( child ); } } }
if ( node instanceof Reference<?> ) { Reference<?> ref = (Reference<?>) node; if ( visitor.visitReference( ref ) ) { if ( ref.isResolved() ) { node = (GMLObject) ref.getReferencedObject(); traverse( node ); FeatureCollection fc = (FeatureCollection) node; for ( Feature member : fc ) { traverse( member ); if ( visitor.visitFeature( f ) ) { traverseGMLObject( f ); if ( visitor.visitGeometry( g ) ) { traverseGeometry( g ); if ( visitor.visitObject( node ) ) { traverseGMLObject( node );
private void traverseCurve( Curve c ) { CurveType ct = c.getCurveType(); switch ( ct ) { case CompositeCurve: for ( Curve member : ( (CompositeCurve) c ) ) { traverse( member ); } break; case Curve: case Ring: for ( CurveSegment segment : c.getCurveSegments() ) { traverseSegment( segment ); } break; case LineString: traversePoints( ( (LineString) c ).getControlPoints() ); break; case OrientableCurve: traverse( ( (OrientableCurve) c ).getBaseCurve() ); break; } }
case CompositeSurface: for ( Surface member : ( (CompositeSurface) s ) ) { traverse( member ); traverse( ( (OrientableSurface) s ).getBaseSurface() ); break; case Polygon: Polygon p = (Polygon) s; if ( p.getExteriorRing() != null ) { traverse( p.getExteriorRing() ); traverse( inner ); case TriangulatedSurface: for ( SurfacePatch patch : s.getPatches() ) { traversePatch( patch ); for ( List<LineStringSegment> stops : tin.getStopLines() ) { for ( LineStringSegment ls : stops ) { traverseSegment( ls ); traverseSegment( ls );
private void traverseGeometry( Geometry node ) { GeometryType gt = node.getGeometryType(); switch ( gt ) { case COMPOSITE_GEOMETRY: for ( Geometry member : (CompositeGeometry<?>) node ) { traverse( member ); } break; case ENVELOPE: // nothing to do break; case MULTI_GEOMETRY: for ( Geometry member : (MultiGeometry<?>) node ) { traverse( member ); } break; case PRIMITIVE_GEOMETRY: traversePrimitive( (GeometricPrimitive) node ); break; } }
XMLTransformer transformer = new XMLTransformer( targetCRS ); transformer.transform( xmlReader, xmlWriter, sourceCRS, gmlVersion, false, trans ); xmlWriter.close();
private void traversePrimitive( GeometricPrimitive g ) { PrimitiveType pt = g.getPrimitiveType(); switch ( pt ) { case Curve: traverseCurve( (Curve) g ); break; case Point: // nothing to do break; case Solid: traverseSolid( (Solid) g ); break; case Surface: traverseSurface( (Surface) g ); break; } }
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; } } }
sb.append( IN_TCRS ).append( " (" ).append( tCrs ).append( ") references an unknown crs." ); } else { transformer = new XMLTransformer( targetCRS ); transformer = new XMLTransformer( targetCRS ); transformer = new XMLTransformer( targetCRS ); transformer = new XMLTransformer( targetCRS );
private void traverseGMLObject( GMLObject node ) { for ( Property prop : node.getProperties() ) { if ( prop.getValue() != null ) { TypedObjectNode ton = prop.getValue(); traverseTypedObjectNode( ton ); } } }
transformStream( gmlReader, gmlWriter, sourceCRS, testValidArea, requestedTransformation );
new GMLObjectWalker( visitor ).traverse( f );
requestedTransformation.add( evaluatedInput.defaultTransform ); evaluatedInput.transformer.transform( inputData, writer, evaluatedInput.sourceCRS, gmlVersion, true, requestedTransformation ); } catch ( XMLParsingException e ) {
private void checkForDuplicateIds( final Feature feature ) throws FeatureStoreException { final IdChecker idChecker = new IdChecker(); try { new GMLObjectWalker( idChecker ).traverse( feature ); } catch ( final Exception e ) { throw new FeatureStoreException( e.getMessage() ); } }
new GMLObjectWalker( visitor ).traverse( fc ); } catch ( IllegalArgumentException e ) { throw new FeatureStoreException( e.getMessage() );
new GMLObjectWalker( visitor ).traverse( fc ); } catch ( IllegalArgumentException e ) { throw new FeatureStoreException( e.getMessage() );