@Override public Iterator iterator() { return new FeatureIteratorIterator<SimpleFeature>(features()); }
@Override public void close(Iterator<SimpleFeature> close) { FeatureIteratorIterator<SimpleFeature> fii = (FeatureIteratorIterator<SimpleFeature>) close; delegate.close(fii.getDelegate()); } }
private List<SimpleFeature> toList(SimpleFeatureCollection features) { return Lists.newArrayList(new FeatureIteratorIterator<>(features.features())); }
private void init(final Filter cqlFilter) throws NoSuchAuthorityCodeException, FactoryException { final SimpleFeatureTypeBuilder typeBuilder = sceneIterator.getProvider().bandFeatureTypeBuilder(); final SimpleFeatureType bandType = typeBuilder.buildFeatureType(); Iterator<SimpleFeature> featureIterator = new FeatureIteratorIterator<SimpleFeature>(sceneIterator); featureIterator = Iterators.concat( Iterators.transform(featureIterator, new SceneToBandFeatureTransform(bandType))); if (cqlFilter != null && !cqlFilter.equals(Filter.INCLUDE)) { final String[] attributes = DataUtilities.attributeNames(cqlFilter, bandType); // we can rely on the scene filtering if we don't have to check any // specific band filters if (ArrayUtils.contains(attributes, BAND_ATTRIBUTE_NAME)) { featureIterator = Iterators.filter( featureIterator, new SceneFeatureIterator.CqlFilterPredicate(cqlFilter)); } } iterator = featureIterator; }
private void init( final boolean nBestScenesByPathRow, final int nBestBands, final Filter cqlFilter) { // wrap the iterator with a feature conversion and a filter (if // provided) final SimpleFeatureType bandType = createFeatureType(sceneIterator.getFeatureType()); iterator = Iterators.concat( Iterators.transform( new FeatureIteratorIterator<SimpleFeature>(sceneIterator), new SceneToBandFeatureTransform(bandType))); if (cqlFilter != null) { final String[] attributes = DataUtilities.attributeNames(cqlFilter, bandType); // we can rely on the scene filtering if we don't have to check any // specific band filters if (ArrayUtils.contains(attributes, BAND_ATTRIBUTE_NAME) || ArrayUtils.contains(attributes, SIZE_ATTRIBUTE_NAME) || ArrayUtils.contains(attributes, BAND_DOWNLOAD_ATTRIBUTE_NAME)) { // and rely on the band filter iterator = Iterators.filter(iterator, new CqlFilterPredicate(cqlFilter)); if (nBestBands > 0) { iterator = SceneFeatureIterator.nBestScenes(this, nBestScenesByPathRow, nBestBands); } } } }
features = new FeatureIteratorIterator<SimpleFeature>(featureIterator);
private void insert(final WorkingTree workTree, final String treePath, @SuppressWarnings("rawtypes") final FeatureSource featureSource, final ProgressListener taskProgress) { final Query query = new Query(); CoordinateSequenceFactory coordSeq = new PackedCoordinateSequenceFactory(); query.getHints().add(new Hints(Hints.JTS_COORDINATE_SEQUENCE_FACTORY, coordSeq)); try (FeatureIterator fit = featureSource.getFeatures(query).features()) { FeatureType schema = featureSource.getSchema(); RevFeatureType featureType = RevFeatureTypeBuilder.build(schema); objectDatabase().put(featureType); ObjectId featureTypeId = featureType.getId(); if (fit.hasNext()) { Iterator<Feature> features = new FeatureIteratorIterator<>(fit); insert(workTree, treePath, features, taskProgress, featureTypeId); } } catch (IOException e) { LOG.warn("Unable to insert into " + treePath, e); throw new GeoToolsOpException(e, StatusCode.UNABLE_TO_INSERT); } }
private void insert(final WorkingTree workTree, final String treePath, @SuppressWarnings("rawtypes") final FeatureSource featureSource, final ProgressListener taskProgress) { final Query query = new Query(); query.setFilter(filter); CoordinateSequenceFactory coordSeq = new PackedCoordinateSequenceFactory(); query.getHints().add(new Hints(Hints.JTS_COORDINATE_SEQUENCE_FACTORY, coordSeq)); try (FeatureIterator fit = featureSource.getFeatures(query).features()) { FeatureType schema = featureSource.getSchema(); RevFeatureType featureType = RevFeatureType.builder().type(schema).build(); objectDatabase().put(featureType); ObjectId featureTypeId = featureType.getId(); if (fit.hasNext()) { Iterator<Feature> features = new FeatureIteratorIterator<>(fit); insert(workTree, treePath, features, taskProgress, featureTypeId); } } catch (IOException e) { LOG.warn("Unable to insert into " + treePath, e); throw new GeoToolsOpException(e, StatusCode.UNABLE_TO_INSERT); } }