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