@Override public Geometry process( Geometry inputGeometry, Map<String, Object> params ) { double bufferDistance = (Double) params.get( "BufferDistance" ); return inputGeometry.getBuffer( new Measure( new BigDecimal( bufferDistance ), "unity" ) ); } }
@Override public Geometry getBuffer( Measure distance ) { return getReferencedObject().getBuffer( distance ); }
@Override public void process( ProcessletInputs in, ProcessletOutputs out, ProcessletExecutionInfo info ) throws ProcessletException { double bufferDistance = Double.parseDouble( ( (LiteralInput) in.getParameter( "BufferDistance" ) ).getValue() ); ComplexInput gmlInputGeometry = (ComplexInput) in.getParameter( "GMLInput" ); Geometry geom = null; Geometry bufferedGeom = null; try { XMLStreamReader xmlReader = gmlInputGeometry.getValueAsXMLStream(); GMLStreamReader gmlReader = GMLInputFactory.createGMLStreamReader( GML_31, xmlReader ); geom = gmlReader.readGeometry(); bufferedGeom = geom.getBuffer( new Measure( new BigDecimal( bufferDistance ), "unity" ) ); } catch ( Exception e ) { throw new ProcessletException( "Error parsing parameter " + gmlInputGeometry.getIdentifier() + ": " + e.getMessage() ); } ComplexOutput gmlOutputGeometry = (ComplexOutput) out.getParameter( "BufferedGeometry" ); try { SchemaLocationXMLStreamWriter sw = new SchemaLocationXMLStreamWriter( gmlOutputGeometry.getXMLStreamWriter(), "http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/base/geometryAggregates.xsd" ); sw.setPrefix( "gml", GMLNS ); GMLStreamWriter gmlWriter = GMLOutputFactory.createGMLStreamWriter( GML_31, sw ); gmlWriter.write( bufferedGeom ); } catch ( Exception e ) { throw new ProcessletException( "Error exporting geometry: " + e.getMessage() ); } }