private void exportFeaturePropertyByValue( QName propName, Feature subFeature, GmlXlinkOptions resolveState ) throws XMLStreamException, UnknownCRSException, TransformationException { referenceExportStrategy.addExportedId( subFeature.getId() ); writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); writer.writeComment( "Inlined feature '" + subFeature.getId() + "'" ); export( subFeature, getResolveStateForNextLevel( resolveState ) ); writer.writeEndElement(); }
private void exportPolyhedralSurface( PolyhedralSurface polyhSurf ) throws XMLStreamException, UnknownCRSException, TransformationException { if ( polyhSurf.getId() != null && referenceExportStrategy.isObjectExported( polyhSurf.getId() ) ) { writer.writeEmptyElement( gmlNs, "PolyhedralSurface" ); writer.writeAttribute( XLNNS, "href", "#" + polyhSurf.getId() ); } else { referenceExportStrategy.addExportedId( polyhSurf.getId() ); writer.writeStartElement( gmlNs, "PolyhedralSurface" ); writer.writeStartElement( gmlNs, "polygonPatches" ); for ( SurfacePatch surfacePatch : polyhSurf.getPatches() ) exportSurfacePatch( surfacePatch ); writer.writeEndElement(); writer.writeEndElement(); } }
private void exportOrientableSurface( OrientableSurface orientableSurface ) throws XMLStreamException, UnknownCRSException, TransformationException { startGeometry( "OrientableSurface", orientableSurface ); Surface baseSurface = orientableSurface.getBaseSurface(); if ( baseSurface.getId() != null && referenceExportStrategy.isObjectExported( baseSurface.getId() ) ) { writer.writeEmptyElement( gmlNs, "baseSurface" ); writer.writeAttribute( XLNNS, "href", "#" + baseSurface.getId() ); } else { referenceExportStrategy.addExportedId( baseSurface.getId() ); writer.writeStartElement( gmlNs, "baseSurface" ); exportSurface( orientableSurface.getBaseSurface() ); writer.writeEndElement(); } writer.writeEndElement(); }
/** * Exporting a triangulated surface via the XMLStreamWriter given when the class was constructed * * @param triangSurface * a {@link TriangulatedSurface} object * @throws XMLStreamException * if an error occured writing to the xml stream * @throws UnknownCRSException * @throws TransformationException */ @Override public void exportTriangulatedSurface( TriangulatedSurface triangSurface ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( gmlNs, "TriangulatedSurface" ); if ( triangSurface.getId() != null && referenceExportStrategy.isObjectExported( triangSurface.getId() ) ) { writer.writeEmptyElement( gmlNs, "trianglePatches" ); writer.writeAttribute( XLNNS, "href", "#" + triangSurface.getId() ); } else { referenceExportStrategy.addExportedId( triangSurface.getId() ); writer.writeStartElement( gmlNs, "trianglePatches" ); for ( SurfacePatch surfacePatch : triangSurface.getPatches() ) exportSurfacePatch( surfacePatch ); writer.writeEndElement(); } writer.writeEndElement(); }
/** * 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(); }
public void export( final TimeSlice timeSlice, final GmlXlinkOptions resolveState ) throws XMLStreamException, UnknownCRSException, TransformationException { if ( timeSlice.getId() != null ) { referenceExportStrategy.addExportedId( timeSlice.getId() ); } final QName featureName = timeSlice.getType().getName(); LOG.debug( "Exporting TimeSlice {} with ID {}", featureName, timeSlice.getId() ); final String namespaceURI = featureName.getNamespaceURI(); final String localName = featureName.getLocalPart(); writeStartElementWithNS( namespaceURI, localName ); if ( timeSlice.getId() != null ) { if ( fidAttr.getNamespaceURI() == "" ) { writer.writeAttribute( fidAttr.getLocalPart(), timeSlice.getId() ); } else { writeAttributeWithNS( fidAttr.getNamespaceURI(), fidAttr.getLocalPart(), timeSlice.getId() ); } } for ( final Property prop : timeSlice.getProperties() ) { export( prop, resolveState ); } writer.writeEndElement(); }
private void startGeometry( String localName, Geometry geometry ) throws XMLStreamException { writeStartElementWithNS( GML21NS, localName ); if ( geometry.getId() != null ) { referenceExportStrategy.addExportedId( geometry.getId() ); writer.writeAttribute( "gid", geometry.getId() ); } if ( outputCRS != null ) { writer.writeAttribute( "srsName", outputCRS.getAlias() ); } else if ( geometry.getCoordinateSystem() != null ) { ICRS coordinateSystem = geometry.getCoordinateSystem(); writer.writeAttribute( "srsName", coordinateSystem.getAlias() ); } }
private void exportPolygon( Polygon polygon ) throws XMLStreamException, UnknownCRSException, TransformationException { startGeometry( "Polygon", polygon ); Ring exteriorRing = polygon.getExteriorRing(); if ( exteriorRing.getId() != null && referenceExportStrategy.isObjectExported( exteriorRing.getId() ) ) { writer.writeEmptyElement( gmlNs, "exterior" ); writer.writeAttribute( XLNNS, "href", "#" + exteriorRing.getId() ); } else { referenceExportStrategy.addExportedId( exteriorRing.getId() ); writer.writeStartElement( gmlNs, "exterior" ); exportRing( exteriorRing ); writer.writeEndElement(); } if ( polygon.getInteriorRings() != null ) { for ( Ring ring : polygon.getInteriorRings() ) { if ( ring.getId() != null && referenceExportStrategy.isObjectExported( ring.getId() ) ) { writer.writeEmptyElement( gmlNs, "interior" ); writer.writeAttribute( XLNNS, "href", "#" + ring.getId() ); } else { referenceExportStrategy.addExportedId( ring.getId() ); writer.writeStartElement( gmlNs, "interior" ); exportRing( ring ); writer.writeEndElement(); } } } exportAdditionalProps( polygon ); writer.writeEndElement(); }
referenceExportStrategy.addExportedId( feature.getId() );
private void startGeometry( String localName, Geometry geometry ) throws XMLStreamException, UnknownCRSException, TransformationException { GMLObjectType gmlType = geometry.getType(); if ( gmlType == null ) { writeStartElementWithNS( gmlNs, localName ); } else { QName elName = gmlType.getName(); writeStartElementWithNS( elName.getNamespaceURI(), elName.getLocalPart() ); } if ( geometry.getId() != null ) { referenceExportStrategy.addExportedId( geometry.getId() ); writeAttributeWithNS( gmlNs, "id", geometry.getId() ); } else if ( version == GML_32 && geometry.getId() == null ) { // in GML 3.2, a gml:id is required for every geometry writeAttributeWithNS( gmlNs, "id", "GEOMETRY_" + generateNewId() ); } if ( outputCRS != null ) { writer.writeAttribute( "srsName", outputCRS.getAlias() ); } else if ( geometry.getCoordinateSystem() != null ) { writer.writeAttribute( "srsName", geometry.getCoordinateSystem().getAlias() ); } exportStandardProps( geometry ); }