private FeatureCollection<SimpleFeatureType, SimpleFeature> getFeatureCollection(SimpleFeatureType featureType) { return featureType2VDN.get(featureType).getFeatureCollection(); }
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; }
private void addGMLMasks(Product target, ImageMetadata metadata) { List<ImageMetadata.MaskInfo> gmlMasks = metadata.getMasks(); final Iterator<Color> colorIterator = ColorIterator.create(); Band refBand = findReferenceBand(target, metadata.getRasterWidth()); boolean isMultiSize = this.metadata.getImageMetadataList().size() > 1; gmlMasks.stream().forEach(mask -> { logger.info(String.format("Parsing mask %s of component %s", mask.name, metadata.getFileName())); VectorDataNode node = GMLReader.parse(mask.name, mask.path); if (node != null && node.getFeatureCollection().size() > 0) { node.setOwner(target); String maskName = mask.name; if (isMultiSize) { String resolution = "_" + new DecimalFormat("#.#").format(metadata.getPixelSize()) + "m"; maskName += resolution.endsWith(".") ? resolution.substring(0, resolution.length() - 1) : resolution; } if (refBand != null) { target.addMask(maskName, node, mask.description, colorIterator.next(), 0.5, refBand); } else { target.addMask(mask.name, node, mask.description, colorIterator.next(), 0.5); } } }); }
private String createToolTip(final VectorDataNode vectorDataNode) { final StringBuilder tooltip = new StringBuilder(); append(tooltip, vectorDataNode.getDescription()); append(tooltip, String.format("type %s, %d feature(s)", vectorDataNode.getFeatureType().getTypeName(), vectorDataNode.getFeatureCollection().size())); return tooltip.toString(); } }
private String[] getPolygons() { // Get polygons from the first product which is assumed to be maskProduct in BaseClassifier final ArrayList<String> geometryNames = new ArrayList<>(5); if (sourceProducts != null) { if (sourceProducts.length > 1) { final ProductNodeGroup<VectorDataNode> vectorDataNodes = sourceProducts[0].getVectorDataGroup(); for(int i=0; i< vectorDataNodes.getNodeCount(); ++i) { VectorDataNode node = vectorDataNodes.get(i); if(!node.getFeatureCollection().isEmpty()) { geometryNames.add(node.getName() + "::" + sourceProducts[0].getName()); } } } else { final ProductNodeGroup<VectorDataNode> vectorDataNodes = sourceProducts[0].getVectorDataGroup(); for(int i=0; i< vectorDataNodes.getNodeCount(); ++i) { VectorDataNode node = vectorDataNodes.get(i); if(!node.getFeatureCollection().isEmpty()) { geometryNames.add(node.getName()); } } } } return geometryNames.toArray(new String[geometryNames.size()]); }
final AffineTransform2D mathTransform = new AffineTransform2D(referenceModelToImageTransform); transformer.setMathTransform(mathTransform); final FeatureCollection<SimpleFeatureType, SimpleFeature> sourceCollection = sourceVectorDataNode.getFeatureCollection(); final DefaultFeatureCollection targetCollection = new DefaultFeatureCollection(sourceCollection.getID(), sourceCollection.getSchema()); final FeatureIterator<SimpleFeature> featureIterator = sourceCollection.features(); VectorDataNode targetVectorDataNode = new VectorDataNode(sourceVectorDataNode.getName(), sourceCollection.getSchema()); targetVectorDataNode.getFeatureCollection().addAll((FeatureCollection<?, ?>) targetCollection); targetVectorDataNode.setDefaultStyleCss(sourceVectorDataNode.getDefaultStyleCss()); targetVectorDataNode.setDescription(sourceVectorDataNode.getDescription()); targetVectorDataNode.setOwner(targetProduct); return targetVectorDataNode;
VectorDataNode windNode = new VectorDataNode(componentName + "_" + WIND_VECTOR_DATA_NODE_NAME, windFeatureType); final DefaultFeatureCollection collection = windNode.getFeatureCollection();
@Override public VectorDataNode readVectorDataNode(File file, Product product, ProgressMonitor pm) throws IOException { DefaultFeatureCollection featureCollection = FeatureUtils.loadShapefileForProduct(file, product, crsProvider, pm); Style[] styles = SLDUtils.loadSLD(file); ProductNodeGroup<VectorDataNode> vectorDataGroup = product.getVectorDataGroup(); String name = VectorDataNodeImporter.findUniqueVectorDataNodeName(featureCollection.getSchema().getName().getLocalPart(), vectorDataGroup); if (styles.length > 0) { SimpleFeatureType featureType = SLDUtils.createStyledFeatureType(featureCollection.getSchema()); VectorDataNode vectorDataNode = new VectorDataNode(name, featureType); DefaultFeatureCollection styledCollection = vectorDataNode.getFeatureCollection(); String defaultCSS = vectorDataNode.getDefaultStyleCss(); SLDUtils.applyStyle(styles[0], defaultCSS, featureCollection, styledCollection); return vectorDataNode; } else { return new VectorDataNode(name, featureCollection); } } }
if (dataSourceConfig.pointDataSource != null && dataSourceConfig.dataField != null) { corrDataName = dataSourceConfig.dataField.getLocalName(); features = dataSourceConfig.pointDataSource.getFeatureCollection().toArray(new SimpleFeature[0]); dataFieldIndex = dataSourceConfig.pointDataSource.getFeatureType().indexOf(corrDataName); } else { corrDataName = "";
private void updateFigureCollection() { FeatureCollection<SimpleFeatureType, SimpleFeature> featureCollection = vectorDataNode.getFeatureCollection(); if (featureFigure != null) { figureMap.remove(simpleFeature); Placemark placemark = vectorDataNode.getPlacemarkGroup().getPlacemark(simpleFeature); if(placemark != null) { String css = placemark.getStyleCss(); featureFigure = getFigureFactory().createSimpleFeatureFigure(simpleFeature, vectorDataNode.getDefaultStyleCss()); figureCollection.addFigure(featureFigure);
private static Map<Class<?>, List<SimpleFeature>> createGeometryToFeaturesListMap(VectorDataNode vectorNode) throws TransformException, SchemaException { FeatureCollection<SimpleFeatureType, SimpleFeature> featureCollection = vectorNode.getFeatureCollection(); CoordinateReferenceSystem crs = vectorNode.getFeatureType().getCoordinateReferenceSystem(); if (crs == null) { // for pins and GCPs crs is null crs = vectorNode.getProduct().getSceneCRS(); if (vectorNode.getProduct().getSceneGeoCoding() instanceof CrsGeoCoding) { modelCrs = vectorNode.getProduct().getSceneCRS(); } else { modelCrs = DefaultGeographicCRS.WGS84;
public static VectorDataNode parse(String maskName, Path inputFile) { VectorDataNode node = null; try (InputStream inputStream = Files.newInputStream(inputFile)) { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); Handler handler = new Handler(); parser.parse(inputStream, handler); List<SimpleFeature> polygonFeatures = handler.getResult(); DefaultFeatureCollection featureCollection = new DefaultFeatureCollection("VectorMasks", featureType); featureCollection.addAll(polygonFeatures); /*for (int i = 0; i < polygonFeatures.size(); i++) { SimpleFeature feature = new SimpleFeatureImpl(new Object[]{ polygonFeatures.get(i), String.format("Polygon-%s", i)}, featureType, new FeatureIdImpl(String.format("F-%s", i)), true); featureCollection.add(feature); }*/ node = new VectorDataNode(maskName, featureCollection); } catch (Exception e) { systemLogger.warning(e.getMessage()); } return node; }
public static VectorDataNode createDefaultVectorDataNode(Product product, String name, String description) { CoordinateReferenceSystem modelCrs = product.getSceneCRS(); SimpleFeatureType type = PlainFeatureFactory.createDefaultFeatureType(modelCrs); VectorDataNode vectorDataNode = new VectorDataNode(name, type); vectorDataNode.setDescription(description); product.getVectorDataGroup().add(vectorDataNode); vectorDataNode.getPlacemarkGroup(); String oldLayerId = selectVectorDataLayer(vectorDataNode); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(new UndoableVectorDataNodeInsertion(product, vectorDataNode, oldLayerId)); } return vectorDataNode; }
if(!maskInfo.isPerPolygon()) { String snapName = String.format("%s_%dm", maskInfo.getSnapName()[i], resolution.resolution); VectorDataNode vdn = new VectorDataNode(snapName, collection); vdn.setOwner(product); product.addMask(snapName, vdn, VectorDataNode vdnPolygon = new VectorDataNode(subId, subCollection); vdnPolygon.setOwner(product); String snapName = String.format("%s_%dm", subId, resolution.resolution); VectorDataNode vdn = new VectorDataNode(snapName, collection); vdn.setOwner(product); product.addMask(snapName, vdn, VectorDataNode vdnPolygon = new VectorDataNode(subId, subCollection); vdnPolygon.setOwner(product);
@Override public String getYName() { return vectorNode.getName(); }
protected VectorDataLayer(VectorDataLayerType vectorDataLayerType, VectorDataNode vectorDataNode, SceneTransformProvider provider, PropertySet configuration) { super(vectorDataLayerType, configuration); setUniqueId(); this.vectorDataNode = vectorDataNode; setName(vectorDataNode.getName()); figureFactory = new SimpleFeatureFigureFactory(vectorDataNode.getFeatureType(), provider); figureCollection = new DefaultFigureCollection(); updateFigureCollection(); vectorDataChangeHandler = new VectorDataChangeHandler(); vectorDataNode.getProduct().addProductNodeListener(vectorDataChangeHandler); figureCollection.addChangeListener(new FigureChangeHandler()); }
contextProduct.getVectorDataGroup().add(new VectorDataNode(vectorDataName, vectorData.getFeatureType()));
@Override public int getColumnCount() { return vectorDataNode.getFeatureType().getAttributeCount(); }
@Override public void figureChanged(FigureChangeEvent event) { final Figure sourceFigure = event.getSourceFigure(); if (sourceFigure instanceof SimpleFeatureFigure) { SimpleFeatureFigure featureFigure = (SimpleFeatureFigure) sourceFigure; try { final VectorDataNode vectorDataNode = getVectorDataNode(); if (vectorDataNode != null ) { final SimpleFeature simpleFeature = featureFigure.getSimpleFeature(); Debug.trace("VectorDataLayer$FigureChangeHandler: vectorDataNode=" + vectorDataNode.getName() + ", featureType=" + simpleFeature.getFeatureType().getTypeName()); reactingAgainstFigureChange = true; vectorDataNode.fireFeaturesChanged(simpleFeature); // checkme - we could do better by computing changed modelRegion instead of passing null (nf) fireLayerDataChanged(null); } } finally { reactingAgainstFigureChange = false; } } } }
Debug.trace("VectorDataLayer$VectorDataChangeHandler.nodeChanged: event = " + event); if (ProductNode.PROPERTY_NAME_NAME.equals(event.getPropertyName())) { setName(getVectorDataNode().getName()); } else if (VectorDataNode.PROPERTY_NAME_STYLE_CSS.equals(event.getPropertyName())) { if (event.getNewValue() != null) { if (getVectorDataNode().getPlacemarkGroup().contains(sourceNode)) if (event.getPropertyName().equals(Placemark.PROPERTY_NAME_STYLE_CSS)) { updateFigureCollection();