@Test public void testModify() throws Exception { final Query queryAll = new Query(RENAMED); SimpleFeatureStore store; store = (SimpleFeatureStore) rts.getFeatureSource(RENAMED); SimpleFeature original = store.getFeatures(fidFilter).features().next(); String newAddress = ((String) original.getAttribute("ADDRESS")) + " xxx"; store.modifyFeatures( original.getFeatureType().getDescriptor("ADDRESS"), newAddress, fidFilter); SimpleFeature modified = store.getFeatures(fidFilter).features().next(); assertEquals(newAddress, modified.getAttribute("ADDRESS")); }
SimpleFeatureSource featureSource = store.getFeatureSource(); CoordinateReferenceSystem sourceCRS = featureSource.getInfo().getCRS(); CoordinateReferenceSystem WGS84 = CRS.decode("EPSG:4326", true); query.setCoordinateSystem(sourceCRS); query.setCoordinateSystemReproject(WGS84); SimpleFeatureCollection featureCollection = featureSource.getFeatures(query); SimpleFeatureIterator it = featureCollection.features(); int i = 0; while (it.hasNext()) { SimpleFeature feature = it.next(); Geometry geom = (Geometry) feature.getDefaultGeometry(); Point point = null; if (geom instanceof Point) { label = Integer.toString(i); } else { label = feature.getAttribute(labelAttribute).toString(); Number n = (Number) feature.getAttribute(inputAttribute); input = n.doubleValue(); it.close(); } catch (Exception ex) { LOG.error("Error loading population from shapefile: {}", ex.getMessage());
public ReferencedEnvelope getBounds() { ReferencedEnvelope bounds = null; SimpleFeatureIterator i = features(); try { if (!i.hasNext()) { bounds = new ReferencedEnvelope(); bounds.setToNull(); } else { SimpleFeature first = (SimpleFeature) i.next(); bounds = new ReferencedEnvelope(first.getBounds()); } while (i.hasNext()) { SimpleFeature f = (SimpleFeature) i.next(); bounds.include(f.getBounds()); } return bounds; } finally { i.close(); } }
SimpleFeatureCollection fc = featureSource.getFeatures(localFilter); SimpleFeatureIterator fi = null; try { fi = fc.features(); if (fi.hasNext()) { SimpleFeature sf = fi.next(); result = (Geometry) sf.getDefaultGeometry(); if (fi.hasNext()) { throw new IOException( "The filter " + localFilter + " matched more than one footprint record, in particular, it matched " + fc.size() + ", the first match is: " + sf); } finally { if (fi != null) { fi.close();
private STRtree loadFeatures(SimpleFeatureCollection joinFeatures) { STRtree spatialIndex = new STRtree(); SimpleFeatureIterator featureIter = joinFeatures.features(); try { while (featureIter.hasNext()) { SimpleFeature feature = featureIter.next(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); spatialIndex.insert(geometry.getEnvelopeInternal(), feature); } } finally { featureIter.close(); } return spatialIndex; } }
private STRtree loadNearFeatures(SimpleFeatureCollection features, String idField) { STRtree spatialIndex = new STRtree(); boolean hasID = idField != null && features.getSchema().indexOf(idField) != -1; SimpleFeatureIterator featureIter = features.features(); try { while (featureIter.hasNext()) { SimpleFeature feature = featureIter.next(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); Object id = hasID ? feature.getAttribute(idField) : feature.getID(); NearFeature nearFeature = new NearFeature(geometry, id); spatialIndex.insert(geometry.getEnvelopeInternal(), nearFeature); } } finally { featureIter.close(); } return spatialIndex; }
public List<Coordinate> getCoordinateList(SimpleFeatureCollection inputFeatures) { List<Coordinate> pointList = new ArrayList<Coordinate>(); SimpleFeatureIterator featureIter = inputFeatures.features(); try { while (featureIter.hasNext()) { SimpleFeature feature = featureIter.next(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); pointList.add(geometry.getCentroid().getCoordinate()); } } finally { featureIter.close(); } return pointList; } }
private STRtree loadNearFeatures(SimpleFeatureCollection features) { STRtree spatialIndex = new STRtree(); SimpleFeatureIterator featureIter = features.features(); try { while (featureIter.hasNext()) { SimpleFeature feature = featureIter.next(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); for (int index = 0; index < geometry.getNumGeometries(); index++) { Geometry part = geometry.getGeometryN(index); NearFeature nearFeature = new NearFeature(part, feature.getID()); spatialIndex.insert(part.getEnvelopeInternal(), nearFeature); } } } finally { featureIter.close(); } return spatialIndex; }
public void testGetFeaturesWithOffsetLimit() throws Exception { Query q = new Query(featureSource.getSchema().getTypeName()); // no sorting, let's see if the database can use native one q.setStartIndex(1); q.setMaxFeatures(1); SimpleFeatureCollection features = featureSource.getFeatures(q); // check size assertEquals(1, features.size()); // check actual iteration try (SimpleFeatureIterator it = features.features()) { assertTrue(it.hasNext()); SimpleFeature f = it.next(); ReferencedEnvelope fe = ReferencedEnvelope.reference(f.getBounds()); assertEquals(1, ((Number) f.getAttribute(aname("intProperty"))).intValue()); assertFalse(it.hasNext()); // assertEquals(fe, features.getBounds()); assertTrue(areReferencedEnvelopesEqual(fe, features.getBounds())); } }
@Test public void testShapeFileWriter() throws IOException{ String inFile = "src/test/resources/" + utils.getInputDirectory() + "test.shp"; String outFile = utils.getOutputDirectory() + "/test.shp"; SimpleFeatureSource s = ShapeFileReader.readDataFile(inFile); SimpleFeatureCollection fts = s.getFeatures(); SimpleFeatureIterator it = fts.features(); SimpleFeature ft = it.next(); Geometry g = (Geometry) ft.getDefaultGeometry(); List<SimpleFeature> fc = new ArrayList<>(); fc.add(ft); ShapeFileWriter.writeGeometries(fc, outFile); SimpleFeatureSource s1 = ShapeFileReader.readDataFile(outFile); SimpleFeatureCollection fts1 = s1.getFeatures(); SimpleFeatureIterator it1 = fts1.features(); SimpleFeature ft1 = it1.next(); Geometry g1 = (Geometry) ft1.getDefaultGeometry(); Assert.assertEquals(g.getCoordinates().length, g1.getCoordinates().length); }
public void testGetFeatureSourceRoad() throws Exception { SimpleFeatureSource road = dataStore.getFeatureSource(tname("road")); assertFeatureTypesEqual(td.roadType, road.getSchema()); assertSame(dataStore, road.getDataStore()); int count = road.getCount(Query.ALL); assertTrue((count == 3) || (count == -1)); SimpleFeatureCollection all = road.getFeatures(); assertEquals(3, all.size()); assertTrue(areReferencedEnvelopesEqual(td.roadBounds, all.getBounds())); assertTrue(areReferencedEnvelopesEqual(td.roadBounds, all.getBounds())); SimpleFeatureCollection some = road.getFeatures(td.rd12Filter); e.include(td.roadFeatures[0].getBounds()); e.include(td.roadFeatures[1].getBounds()); assertTrue(areReferencedEnvelopesEqual(e, some.getBounds())); try (SimpleFeatureIterator reader = half.features()) { SimpleFeatureType type = half.getSchema(); SimpleFeatureType actual = reader.next().getFeatureType(); assertEquals(type.getName(), actual.getName()); assertEquals(type.getAttributeCount(), actual.getAttributeCount());
GeometryType geometryType = (GeometryType) featureSource.getSchema().getDescriptor(sourceIndex).getType(); GeometryConverter converter = new GeometryConverter(geometryType); SimpleFeatureIterator it = featureSource.getFeatures().features(); while(it.hasNext()) { SimpleFeature feature = it.next(); ResourceId sourceId = ResourceId.valueOf(feature.getID()); ResourceId targetId = idMap.get(sourceId); Geometry geometry = converter.toWgs84(feature.getAttribute(sourceIndex)); System.out.print("Updating geometry for " + targetId + " [" + geometry.getGeometryType() + "] ... ");
String typeName = shapeDS.getTypeNames()[0]; SimpleFeatureSource fs = shapeDS.getFeatureSource(typeName); SimpleFeatureType ftype = fs.getSchema(); DataStore[] dataStores = createDataStores(shapeFile, targetDir, ftype, distanceArray); SimpleFeatureCollection fcoll = fs.getFeatures(); SimpleFeatureIterator it = fcoll.features(); try { int countTotal = fcoll.size(); while (it.hasNext()) { SimpleFeature feature = it.next(); for (int i = 0; i < distanceArray.length; i++) { FeatureWriter<SimpleFeatureType, SimpleFeature> w = writers.get(i); SimpleFeature genFeature = w.next(); genFeature.setAttributes(feature.getAttributes()); Geometry newGeom = TopologyPreservingSimplifier.simplify( (Geometry) feature.getDefaultGeometry(), distanceArray[i]); genFeature.setDefaultGeometry(newGeom); w.write(); it.close();
public void testDifferentCRS() throws Exception { CoordinateReferenceSystem srcCRS = DefaultGeographicCRS.WGS84; GeometryFactory fac = new GeometryFactory(); Point p = fac.createPoint(new Coordinate(10, 10)); SimpleFeatureCollection collection = createDatastore(srcCRS, p); SimpleFeatureIterator original = collection.features(); CoordinateReferenceSystem destCRS = DefaultEngineeringCRS.CARTESIAN_2D; ForceCoordinateSystemIterator modified = new ForceCoordinateSystemIterator( collection.features(), collection.getSchema(), destCRS); SimpleFeature f1 = original.next(); SimpleFeature f2 = modified.next(); assertEquals( ((Geometry) f1.getDefaultGeometry()).getCoordinate(), ((Geometry) f2.getDefaultGeometry()).getCoordinate()); assertFalse( f1.getFeatureType() .getCoordinateReferenceSystem() .equals(f2.getFeatureType().getCoordinateReferenceSystem())); assertEquals(srcCRS, f1.getFeatureType().getCoordinateReferenceSystem()); assertEquals( srcCRS, f1.getFeatureType().getGeometryDescriptor().getCoordinateReferenceSystem()); assertEquals(destCRS, f2.getFeatureType().getCoordinateReferenceSystem()); assertEquals( destCRS, f2.getFeatureType().getGeometryDescriptor().getCoordinateReferenceSystem()); assertFalse(original.hasNext()); assertFalse(modified.hasNext()); assertNotNull(modified.builder); }
tb.init(fs.getSchema()); tb.setName(BRIDGES.getLocalPart()); SimpleFeatureType target = tb.buildFeatureType(); assertEquals(target, retyped.getSchema()); DataStore rs = (DataStore) retyped.getDataStore(); assertEquals(1, rs.getTypeNames().length); assertEquals(BRIDGES.getLocalPart(), rs.getTypeNames()[0]); Filter fidFilter = ff.id(Collections.singleton(ff.featureId(fid))); SimpleFeatureIterator it = retyped.getFeatures(fidFilter).features(); assertTrue(it.hasNext()); SimpleFeature f = it.next(); assertFalse(it.hasNext()); it.close(); assertEquals("114", f.getAttribute("FID")); assertEquals("215 Main Street", f.getAttribute("ADDRESS"));
public SimpleFeature next() throws NoSuchElementException { final SimpleFeature next = delegate.next(); // check all write protected attributes are null final SimpleFeatureType featureType = next.getFeatureType(); for (AttributeDescriptor att : featureType.getAttributeDescriptors()) { String name = att.getLocalName(); if (!writableAttributes.contains(name)) { Object value = next.getAttribute(name); if (value != null) { String typeName = getSchema().getName().getLocalPart(); if (response == Response.CHALLENGE) { throw SecureCatalogImpl.unauthorizedAccess(typeName); } else { throw new UnsupportedOperationException( "Trying to write on the write protected attribute " + name); } } } } return next; } }
public void handleFeatureIterator(SimpleFeatureIterator iterator) throws IOException { try { while (iterator.hasNext() && running) { SimpleFeature f = iterator.next(); handleFeature(f); SimpleFeatureType t = f.getFeatureType(); for (int i = 0, ii = f.getAttributeCount(); i < ii; i++) { AttributeDescriptor descriptor = t.getDescriptor(i); Object value = f.getAttribute(i); handleAttribute(descriptor, value); } endFeature(f); } } catch (Exception ioe) { throw new RuntimeException("Error reading Features", ioe); } finally { if (iterator != null) { LOGGER.finer("closing reader " + iterator); iterator.close(); } } }
public void testGetFeaturesWithMax() throws Exception { Query q = new Query(featureSource.getSchema().getTypeName()); q.setMaxFeatures(2); SimpleFeatureCollection features = featureSource.getFeatures(q); // check size assertEquals(2, features.size()); // check actual iteration try (SimpleFeatureIterator it = features.features()) { int count = 0; ReferencedEnvelope env = new ReferencedEnvelope(features.getSchema().getCoordinateReferenceSystem()); while (it.hasNext()) { SimpleFeature f = it.next(); env.expandToInclude(ReferencedEnvelope.reference(f.getBounds())); count++; } assertEquals(2, count); assertTrue(areReferencedEnvelopesEqual(env, features.getBounds())); } }
SimpleFeatureSource featureSource = store.getFeatureSource(); CoordinateReferenceSystem sourceCRS = featureSource.getInfo().getCRS(); CoordinateReferenceSystem WGS84 = CRS.decode("EPSG:4326", true); query.setCoordinateSystem(sourceCRS); query.setCoordinateSystemReproject(WGS84); SimpleFeatureCollection featureCollection = featureSource.getFeatures(query); SimpleFeatureIterator it = featureCollection.features(); SimpleFeature protoFt = it.next(); if (propertyFields == null) { propertyFields = new ArrayList<String>(); for (Property p : protoFt.getProperties()) { propertyFields.add(p.getName().toString()); it = featureCollection.features(); PointSet ret = new PointSet(featureCollection.size()); int i=0; while (it.hasNext()) { SimpleFeature feature = it.next(); Geometry geom = (Geometry) feature.getDefaultGeometry(); ft.setId(Integer.toString(i)); } else { ft.setId(feature.getProperty(originIDField).getValue().toString());