Changeset 20390 in osm for applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/SimplifyWay.java
- Timestamp:
- 2010-03-09T22:02:00+01:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/SimplifyWay.java
r19078 r20390 3 3 4 4 import java.util.ArrayList; 5 6 import java.util.Collection;7 import java.util.Collections;8 import java.util.HashSet;9 import java.util.LinkedList;10 5 import java.util.List; 11 6 12 import org.openstreetmap.josm.Main;13 import org.openstreetmap.josm.command.ChangeCommand;14 import org.openstreetmap.josm.command.Command;15 import org.openstreetmap.josm.command.DeleteCommand;16 import org.openstreetmap.josm.command.SequenceCommand;17 import org.openstreetmap.josm.data.osm.DataSet;18 7 import org.openstreetmap.josm.data.osm.Node; 19 import org.openstreetmap.josm.data.osm.OsmPrimitive;20 8 import org.openstreetmap.josm.data.osm.Way; 21 import static org.openstreetmap.josm.tools.I18n.trn;22 23 24 9 25 10 /** … … 29 14 */ 30 15 public class SimplifyWay { 31 public void simplifyWay(Way w , DataSet dataSet, double threshold) {16 public void simplifyWay(Way w/*, DataSet dataSet*/, double threshold) { 32 17 Way wnew = new Way(w); 33 18 34 int toI = wnew.getNodesCount() - 1; 35 List<OsmPrimitive> parents = new ArrayList<OsmPrimitive>(); 36 for (int i = wnew.getNodesCount() - 1; i >= 0; i--) { 37 //CollectBackReferencesVisitor backRefsV = new CollectBackReferencesVisitor(dataSet, false); 38 //backRefsV.visit(wnew.getNode(i)); 39 parents.addAll(w.getNode(i).getReferrers()); 40 boolean used = false; 41 if (parents.size() == 1) { 42 used = Collections.frequency(w.getNodes(), wnew.getNode(i)) > 1; 43 } else { 44 //backRefsV.getData().remove(w); 45 parents.remove(w); 46 used = !parents.isEmpty(); 47 } 48 if (!used) 49 used = wnew.getNode(i).isTagged(); 19 // int toI = wnew.getNodesCount() - 1; 20 // List<OsmPrimitive> parents = new ArrayList<OsmPrimitive>(); 21 // for (int i = wnew.getNodesCount() - 1; i >= 0; i--) { 22 // //CollectBackReferencesVisitor backRefsV = new CollectBackReferencesVisitor(dataSet, false); 23 // //backRefsV.visit(wnew.getNode(i)); 24 // parents.addAll(w.getNode(i).getReferrers()); 25 // boolean used = false; 26 // if (parents.size() == 1) { 27 // used = Collections.frequency(w.getNodes(), wnew.getNode(i)) > 1; 28 // } else { 29 // //backRefsV.getData().remove(w); 30 // parents.remove(w); 31 // used = !parents.isEmpty(); 32 // } 33 // if (!used) 34 // used = wnew.getNode(i).isTagged(); 35 // 36 // if (used) { 37 // simplifyWayRange(wnew, i, toI, threshold); 38 // toI = i; 39 // } 40 // } 41 simplifyWayRange(wnew, 0, wnew.getNodesCount() - 1, threshold); 42 w.setNodes(wnew.getNodes()); 43 // HashSet<Node> delNodes = new HashSet<Node>(); 44 // delNodes.addAll(w.getNodes()); 45 // delNodes.removeAll(wnew.getNodes()); 50 46 51 if (used) { 52 simplifyWayRange(wnew, i, toI, threshold); 53 toI = i; 54 } 55 } 56 simplifyWayRange(wnew, 0, toI, threshold); 57 58 HashSet<Node> delNodes = new HashSet<Node>(); 59 delNodes.addAll(w.getNodes()); 60 delNodes.removeAll(wnew.getNodes()); 61 62 if (wnew.getNodesCount() != w.getNodesCount()) { 63 Collection<Command> cmds = new LinkedList<Command>(); 64 cmds.add(new ChangeCommand(w, wnew)); 65 cmds.add(new DeleteCommand(delNodes)); 66 Main.main.undoRedo.add(new SequenceCommand(trn("Simplify Way (remove {0} node)", "Simplify Way (remove {0} nodes)", delNodes.size(), delNodes.size()), cmds)); 67 Main.map.repaint(); 68 } 47 // if (wnew.getNodesCount() != w.getNodesCount()) { 48 // Collection<Command> cmds = new LinkedList<Command>(); 49 // cmds.add(new ChangeCommand(w, wnew)); 50 // cmds.add(new DeleteCommand(delNodes)); 51 // Main.main.undoRedo.add(new SequenceCommand(trn("Simplify Way (remove {0} node)", "Simplify Way (remove {0} nodes)", delNodes.size(), delNodes.size()), cmds)); 52 // Main.map.repaint(); 53 // } 69 54 } 70 55
Note:
See TracChangeset
for help on using the changeset viewer.