private VectorDataNode[] createVectorDataNodes(FeatureCollection<SimpleFeatureType, SimpleFeature> productFeatures) { final FeatureIterator<SimpleFeature> featureIterator = productFeatures.features(); final List<VectorDataNode> result = new ArrayList<VectorDataNode>(); while (featureIterator.hasNext()) { final SimpleFeature simpleFeature = featureIterator.next(); final DefaultFeatureCollection fc = new DefaultFeatureCollection(simpleFeature.getID(), simpleFeature.getFeatureType()); fc.add(simpleFeature); String name = Util.getFeatureName(simpleFeature); result.add(new VectorDataNode(name, fc)); } return result.toArray(new VectorDataNode[result.size()]); }
private synchronized PlacemarkGroup createPinGroup() { final VectorDataNode vectorDataNode = new VectorDataNode(PIN_GROUP_NAME, Placemark.createPinFeatureType()); vectorDataNode.setDefaultStyleCss( "symbol:pin; fill:#0000ff; fill-opacity:0.7; stroke:#ffffff; stroke-opacity:1.0; stroke-width:0.5"); vectorDataNode.setPermanent(true); this.vectorDataGroup.add(vectorDataNode); return vectorDataNode.getPlacemarkGroup(); }
private synchronized PlacemarkGroup createGcpGroup() { final VectorDataNode vectorDataNode = new VectorDataNode(GCP_GROUP_NAME, Placemark.createGcpFeatureType()); vectorDataNode.setDefaultStyleCss("symbol:plus; stroke:#ff8800; stroke-opacity:0.8; stroke-width:1.0"); vectorDataNode.setPermanent(true); this.vectorDataGroup.add(vectorDataNode); return vectorDataNode.getPlacemarkGroup(); }
@Test public void testVectorData() throws TransformException, FactoryException { SimpleFeatureType pinType = Placemark.createPinFeatureType(); SimpleFeatureType gcpType = Placemark.createGcpFeatureType(); SimpleFeatureType unknownType = PlacemarkDescriptorRegistryTest.createYetUnknownFeatureType(); testVectorData(new VectorDataNode("Pins", pinType), "Pins", pinType); testVectorData(new VectorDataNode("GCPs", gcpType), "GCPs", gcpType); testVectorData(new VectorDataNode("Imported", unknownType), "Imported", unknownType); }
private VectorDataNode createDummyVDN() { SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder(); typeBuilder.setName("typeName"); return new VectorDataNode("name", typeBuilder.buildFeatureType()); }
private static VectorDataNode createVectorDataNode(FeatureStatisticsWriter featureStatisticsWriter, VectorDataNode originalVDN) { final SimpleFeatureType updatedFeatureType = featureStatisticsWriter.getUpdatedFeatureType(); final List<SimpleFeature> features = featureStatisticsWriter.getFeatures(); final ListFeatureCollection featureCollection = new ListFeatureCollection(updatedFeatureType, features); final PlacemarkDescriptor placemarkDescriptor = originalVDN.getPlacemarkDescriptor(); final VectorDataNode vectorDataNode = new VectorDataNode(originalVDN.getName(), featureCollection, placemarkDescriptor); vectorDataNode.setPermanent(originalVDN.isPermanent()); vectorDataNode.setModified(true); vectorDataNode.setDescription(originalVDN.getDescription()); return vectorDataNode; }
@Test public void testMaskIsNotAddedWhenEmptyVdnIsAdded() throws Exception { final Product p = new Product("P", "T", 1, 1); p.getVectorDataGroup().add(new VectorDataNode("V", new GeometryDescriptor().getBaseFeatureType())); assertEquals(0, p.getMaskGroup().getNodeCount()); }
@Before public void setup() { product = new Product("P", "T", 11, 11); pyramids = new VectorDataNode("pyramids", Placemark.createGeometryFeatureType()); product.getVectorDataGroup().add(pyramids); image = new VectorDataMultiLevelImage(VectorDataMultiLevelImage.createMaskMultiLevelSource(pyramids), pyramids); }
@Test public void testUpdatePointDataSource() throws Exception { final BindingContext bindingContext = new BindingContext(); bindingContext.getPropertySet().addProperties(Property.create("pointDataSource", VectorDataNode.class)); bindingContext.getPropertySet().addProperties(Property.create("dataField", AttributeDescriptor.class)); final CorrelativeFieldSelector correlativeFieldSelector = new CorrelativeFieldSelector(bindingContext); final Product product = new Product("name", "type", 10, 10); product.getVectorDataGroup().add(new VectorDataNode("a", createFeatureType(Geometry.class))); product.getVectorDataGroup().add(new VectorDataNode("b", createFeatureType(Point.class))); assertEquals(0, correlativeFieldSelector.pointDataSourceList.getItemCount()); assertEquals(0, correlativeFieldSelector.dataFieldList.getItemCount()); correlativeFieldSelector.updatePointDataSource(product); assertEquals(3, correlativeFieldSelector.pointDataSourceList.getItemCount()); assertEquals(0, correlativeFieldSelector.dataFieldList.getItemCount()); correlativeFieldSelector.pointDataSourceProperty.setValue(product.getVectorDataGroup().get("b")); assertEquals(3, correlativeFieldSelector.dataFieldList.getItemCount()); }
@Test public void testMaskIsAddedWhenNonEmptyVdnIsAdded() throws Exception { final Product p = new Product("P", "T", 1, 1); final SimpleFeatureType featureType = new GeometryDescriptor().getBaseFeatureType(); final VectorDataNode node = new VectorDataNode("V", featureType); node.getFeatureCollection().add(new SimpleFeatureBuilder(featureType).buildFeature("id")); p.getVectorDataGroup().add(node); assertEquals(1, p.getMaskGroup().getNodeCount()); assertNotNull(p.getMaskGroup().get("V")); }
@Test public void testMaskIsAddedWhenFeatureIsAddedForTheFirstTime() throws Exception { final Product p = new Product("P", "T", 1, 1); final SimpleFeatureType featureType = new GeometryDescriptor().getBaseFeatureType(); final VectorDataNode node = new VectorDataNode("V", featureType); p.getVectorDataGroup().add(node); node.getFeatureCollection().add(new SimpleFeatureBuilder(featureType).buildFeature("id")); assertEquals(1, p.getMaskGroup().getNodeCount()); assertNotNull(p.getMaskGroup().get("V")); }
@Test public void testVectorDataGroup() throws TransformException, FactoryException { Product p = new Product("p", "pt", 512, 512); assertEquals(2, p.getVectorDataGroup().getNodeCount()); SimpleFeatureType pinType = Placemark.createPinFeatureType(); SimpleFeatureType gcpType = Placemark.createGcpFeatureType(); p.getVectorDataGroup().add(new VectorDataNode("My Pins", pinType)); p.getVectorDataGroup().add(new VectorDataNode("My GCPs", gcpType)); assertEquals(4, p.getVectorDataGroup().getNodeCount()); testVectorData(p, "My Pins", pinType); testVectorData(p, "My GCPs", gcpType); }
@Test public void testMaskIsRemovedWhenVdnIsRemoved() throws Exception { final Product p = new Product("P", "T", 1, 1); final SimpleFeatureType featureType = new GeometryDescriptor().getBaseFeatureType(); final VectorDataNode node = new VectorDataNode("V", featureType); p.getVectorDataGroup().add(node); node.getFeatureCollection().add(new SimpleFeatureBuilder(featureType).buildFeature("id1")); assertEquals(1, p.getMaskGroup().getNodeCount()); p.getVectorDataGroup().remove(node); assertEquals(0, p.getMaskGroup().getNodeCount()); } }
@Test public void testMaskIsNotAddedWhenFeatureIsAddedForTheSecondTime() throws Exception { final Product p = new Product("P", "T", 1, 1); final SimpleFeatureType featureType = new GeometryDescriptor().getBaseFeatureType(); final VectorDataNode node = new VectorDataNode("V", featureType); p.getVectorDataGroup().add(node); node.getFeatureCollection().add(new SimpleFeatureBuilder(featureType).buildFeature("id1")); node.getFeatureCollection().add(new SimpleFeatureBuilder(featureType).buildFeature("id2")); assertEquals(1, p.getMaskGroup().getNodeCount()); assertNotNull(p.getMaskGroup().get("V")); }
@Test public void testMaskIsRemovedWhenAllFeaturesAreRemoved() throws Exception { final Product p = new Product("P", "T", 1, 1); final SimpleFeatureType featureType = new GeometryDescriptor().getBaseFeatureType(); final VectorDataNode node = new VectorDataNode("V", featureType); p.getVectorDataGroup().add(node); node.getFeatureCollection().add(new SimpleFeatureBuilder(featureType).buildFeature("id1")); node.getFeatureCollection().add(new SimpleFeatureBuilder(featureType).buildFeature("id2")); node.getFeatureCollection().clear(); assertEquals(0, p.getMaskGroup().getNodeCount()); }
@Test public void testAddingEmptyGcpVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getGcpGroup()); final VectorDataNode node = p.getVectorDataGroup().get("ground_control_points"); // add empty "GCP" VDN final VectorDataNode node2 = new VectorDataNode("ground_control_points", node.getFeatureType()); final boolean added = p.getVectorDataGroup().add(node2); assertFalse(added); assertSame(node, p.getVectorDataGroup().get("ground_control_points")); assertTrue(node.getFeatureCollection().isEmpty()); assertEquals(0, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }
@Test public void testAddingEmptyPinVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getPinGroup()); final VectorDataNode node = p.getVectorDataGroup().get("pins"); // add empty "pins" VDN final VectorDataNode node2 = new VectorDataNode("pins", node.getFeatureType()); final boolean added = p.getVectorDataGroup().add(node2); assertFalse(added); assertSame(node, p.getVectorDataGroup().get("pins")); assertTrue(node.getFeatureCollection().isEmpty()); assertEquals(0, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }
@Test public void testAddingNonEmptyGcpVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getGcpGroup()); final VectorDataNode node = p.getVectorDataGroup().get("ground_control_points"); // add non-empty "pins" VDN final VectorDataNode node2 = new VectorDataNode("ground_control_points", node.getFeatureType()); node2.getFeatureCollection().add(new SimpleFeatureBuilder(node.getFeatureType()).buildFeature("id")); final boolean added3 = p.getVectorDataGroup().add(node2); assertFalse(added3); assertSame(node, p.getVectorDataGroup().get("ground_control_points")); assertFalse(node.getFeatureCollection().isEmpty()); assertEquals(1, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); } }
@Test public void testAddingNonEmptyPinVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getPinGroup()); final VectorDataNode node = p.getVectorDataGroup().get("pins"); // add non-empty "pins" VDN final VectorDataNode node2 = new VectorDataNode("pins", node.getFeatureType()); node2.getFeatureCollection().add(new SimpleFeatureBuilder(node.getFeatureType()).buildFeature("id")); final boolean added3 = p.getVectorDataGroup().add(node2); assertFalse(added3); assertSame(node, p.getVectorDataGroup().get("pins")); assertFalse(node.getFeatureCollection().isEmpty()); assertEquals(1, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }
@Test public void testVectorDataNodeAndPlacemarkGroup() { Product p = new Product("p", "pt", 512, 512); ProductNodeGroup<VectorDataNode> vectorDataGroup = p.getVectorDataGroup(); Placemark placemark = Placemark.createPointPlacemark(PointDescriptor.getInstance(), "placemark_1", null, null, new PixelPos(10, 10), null, null); VectorDataNode vectorDataNode = new VectorDataNode("Features", Placemark.createPointFeatureType("feature")); FeatureCollection<SimpleFeatureType, SimpleFeature> featureCollection = vectorDataNode.getFeatureCollection(); vectorDataGroup.add(vectorDataNode); //Also: Sets the owner of the vectorDataNode vectorDataNode.getPlacemarkGroup(); //Also: Creates the PlacemarkGroup (owner has to be set!) featureCollection.add(placemark.getFeature()); assertEquals(1, vectorDataNode.getFeatureCollection().size()); assertEquals(vectorDataNode.getFeatureCollection().size(), vectorDataNode.getPlacemarkGroup().getNodeCount()); }