com.vividsolutions.jump.util.CollectionUtil seemed to me too generic to add these method. The only class I found that could have been used was Sigle one
Il giorno mar 22 set 2020 alle ore 13:17 <edgar.sol...@web.de> ha scritto: > any specific reason why you added it to the class in the sigle package? > ..ede > > On 9/22/2020 12:25, Giuseppe Aruta wrote: > > Done > > > > Il giorno mar 22 set 2020 alle ore 12:06 <edgar.sol...@web.de <mailto: > edgar.sol...@web.de>> ha scritto: > > > > Peppe, some comments inline below ..ede > > > > On 9/22/2020 11:30, jump-pilot-svn--- via Jump-pilot-devel wrote: > > > Revision: 6508 > > > http://sourceforge.net/p/jump-pilot/code/6508 < > http://sourceforge.net/p/jump-pilot/code/6508> > > > Author: ma15569 > > > Date: 2020-09-22 09:30:06 +0000 (Tue, 22 Sep 2020) > > > Log Message: > > > ----------- > > > added two method to valid and to union by attribute a > FeatureCollection > > > > > > Modified Paths: > > > -------------- > > > > core/trunk/src/org/openjump/sigle/utilities/geom/FeatureCollectionUtil.java > > > > > > Modified: > core/trunk/src/org/openjump/sigle/utilities/geom/FeatureCollectionUtil.java > > > > =================================================================== > > > --- > core/trunk/src/org/openjump/sigle/utilities/geom/FeatureCollectionUtil.java > 2020-09-22 09:26:19 UTC (rev 6507) > > > +++ > core/trunk/src/org/openjump/sigle/utilities/geom/FeatureCollectionUtil.java > 2020-09-22 09:30:06 UTC (rev 6508) > > > @@ -8,12 +8,23 @@ > > > > > > > > SNIP > > > > > > /** > > > * This class can check if a FeatureCollection has only one > Geometry Type > > > @@ -22,7 +33,8 @@ > > > * @author Erwan Bocher > > > * @author Olivier Bedel > > > * @version 2005-08-10 > > > - * > > > + * @author Giuseppe Aruta [2020-07-22] > > > + * added two method to valid and to union by attribute a > FeatureCollection > > > */ > > > > > > public class FeatureCollectionUtil { > > > @@ -90,4 +102,88 @@ > > > return AttributesList; > > > > > > } > > > + /** > > > + * Method to make a FeatureCollection valid > > > + * @param fc > > > + */ > > > > can you add to the javadoc exactly what is the method doing to make > it valid? why wasn't it valid before? > > > > > + public static void > validFeatureCollection(FeatureCollection fc) { > > > + MakeValidOp makeValidOp = new MakeValidOp(); > > > + makeValidOp.setPreserveGeomDim(true); > > > + makeValidOp.setPreserveDuplicateCoord(false); > > > + for (Feature feature : fc.getFeatures()) { > > > + Geometry validGeom = > makeValidOp.makeValid(feature.getGeometry()); > > > + feature.setGeometry(validGeom); > > > + } > > > + // return fc; > > > + } > > > + > > > + /** > > > + * Mathod to merge geometries of a FeaureCollection > according > > > > probably "Method to merge geometries of a FeatureCollection > according" > > > > > + * to an attribute > > > + * @param featureCollection > > > + * @param value > > > > what is the value. looks like the attribute name to me. please > javadoc it > > > > > + * @throws Exception > > > + */ > > > + public static void > unionByAttributeValue(FeatureCollection featureCollection, String value) > throws Exception { > > > + FeatureSchema schema = > featureCollection.getFeatureSchema(); > > > + if (featureCollection.getFeatures().size() > > 1 && > > > + > featureCollection.getFeatures().get(0).getGeometry() != null) { > > > + > featureCollection.getFeatures().get(0).getGeometry().getFactory(); > > > + } > > > + else { > > > + Logger.error( > > > + > I18N.get("ui.plugin.analysis.DissolvePlugIn.needs-two-features-or-more")); > > > + // return null; > > > + } > > > + FeatureSchema newSchema; > > > + newSchema = schema; > > > + Map<Object, FeatureCollection> map = new > HashMap<Object, FeatureCollection>(); > > > + for (Feature feature : > featureCollection.getFeatures()) { > > > + Object key = > feature.getAttribute(value); > > > + if (!map.containsKey(key)) { > > > + FeatureCollection fd = new > FeatureDataset(featureCollection.getFeatureSchema()); > > > + fd.add(feature); > > > + map.put(key, fd); > > > + } else { > > > + map.get(key).add(feature); > > > + } > > > + } > > > + > featureCollection.removeAll(featureCollection.getFeatures()); > > > + for (Iterator<Object> i = > map.keySet().iterator() ; i.hasNext() ; ) { > > > + Object key = i.next(); > > > + FeatureCollection fca = > map.get(key); > > > + if (fca.size() > 0) { > > > + Feature feature = union(fca); > > > + feature.setAttribute(value, key); > > > + Feature newFeature = new > BasicFeature(newSchema); > > > + // Copy feature attributes in > newFeature > > > + for (int j = 0, max = > newSchema.getAttributeCount() ; j < max ; j++) { > > > + newFeature.setAttribute(j, > feature.getAttribute(newSchema.getAttributeName(j))); > > > + } > > > + featureCollection.add(newFeature); > > > + } > > > + } > > > + // return featureCollection; > > > + } > > > + > > > + > > > + private static Feature union(FeatureCollection > fc) { > > > + GeometryFactory factory = new > GeometryFactory(); > > > + Collection<Geometry> geometries = new > ArrayList<Geometry>(); > > > + for (Feature f : fc.getFeatures()) { > > > + Geometry g = f.getGeometry(); > > > + geometries.add(g); > > > + } > > > + Geometry unioned = > UnaryUnionOp.union(geometries); > > > + FeatureSchema schema = > fc.getFeatureSchema(); > > > + Feature feature = new BasicFeature(schema); > > > + if (geometries.size()==0) { > > > + > feature.setGeometry(factory.createGeometryCollection(new Geometry[]{})); > > > + } > > > + else { > > > + feature.setGeometry(unioned); > > > + } > > > + return feature; > > > + } > > > + > > > } > > > > > > > > > > > > _______________________________________________ > > > Jump-pilot-devel mailing list > > > Jump-pilot-devel@lists.sourceforge.net <mailto: > Jump-pilot-devel@lists.sourceforge.net> > > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel < > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel> > > > > > > > > > > > _______________________________________________ > > Jump-pilot-devel mailing list > > Jump-pilot-devel@lists.sourceforge.net <mailto: > Jump-pilot-devel@lists.sourceforge.net> > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel < > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel> > > > > > > > > _______________________________________________ > > Jump-pilot-devel mailing list > > Jump-pilot-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > _______________________________________________ > Jump-pilot-devel mailing list > Jump-pilot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel >
_______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel