@Override public List<WorldRenderableObject> importFromFile( String fileName, int numberOfQualityLevels, int qualityLevel ) throws IOException { FeatureCollection fc = null; try { fc = readGML( fileName ); } catch ( Exception e ) { throw new IOException( "Error while importing file: " + fileName + " because: " + e.getLocalizedMessage(), e ); } Map<String, WorldRenderableObject> bMap = new HashMap<String, WorldRenderableObject>( fc.size() ); for ( Feature f : fc ) { if ( BUILDING_QNAME.equals( f.getName() ) ) { WorldRenderableObject wro = createDataObjectWithMaterial( f, numberOfQualityLevels, qualityLevel ); if ( wro != null ) { if ( !bMap.containsKey( wro.getId() ) ) { bMap.put( wro.getId(), wro ); } else { LOG.warn( "Duplicate building with id: " + wro.getId() + " using first building with envelope: " + wro.getBbox().toString() ); } } } else { LOG.warn( "Unhandled feature type '" + f.getName() + "' -- skipping." ); } } List<WorldRenderableObject> result = new ArrayList<WorldRenderableObject>( bMap.size() ); result.addAll( bMap.values() ); return result; }
/** * @param wro * @return */ private RenderablePrototype createRenderablePrototype( WorldRenderableObject wro ) { RenderableQualityModel[] models = wro.getQualityLevels(); if ( models == null || models.length != 1 ) { return null; } return new RenderablePrototype( wro.getId(), wro.getTime(), wro.getBbox(), models[0] ); }
wos.createSimplified3DObject( building, sourceQL, targetQL ); DataObjectInfo<WorldRenderableObject> updated = new DataObjectInfo<WorldRenderableObject>( building.getId(), Type.BUILDING.getModelTypeName(), building.getName(),
/** * @param building * @return the DataObjectInfo which holds values of the given building. */ private DataObjectInfo<RenderablePrototype> createDataObjectInfo( WorldRenderableObject building ) { RenderableQualityModel rqm = building.getQualityLevel( 0 ); if ( rqm == null ) { LOG.info( "Could not extract the quality level of the RenderablePrototype with id:" + building.getId() ); return null; } rqm = createScaledQualityModel( rqm ); Envelope env = new GeometryFactory().createEnvelope( new double[] { 0, 0, 0 }, new double[] { 1, 1, 1 }, null ); building.setBbox( env ); RenderablePrototype rp = new RenderablePrototype( building.getId(), building.getTime(), building.getBbox(), rqm ); return new DataObjectInfo<RenderablePrototype>( building.getId(), Type.PROTOTYPE.getModelTypeName(), building.getName(), building.getExternalReference(), building.getBbox(), rp ); }
/** * @param building * @return the DataObjectInfo which holds values of the given building. */ private DataObjectInfo<WorldRenderableObject> createDataObjectInfo( WorldRenderableObject building ) { return new DataObjectInfo<WorldRenderableObject>( building.getId(), Type.BUILDING.getModelTypeName(), building.getName(), building.getExternalReference(), building.getBbox(), building ); }