Changeset 17361 in osm for applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/SimplifyWayAction.java
- Timestamp:
- 2009-08-30T17:49:38+02:00 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/SimplifyWayAction.java
r16628 r17361 11 11 import java.util.HashSet; 12 12 import java.util.LinkedList; 13 import java.util.List; 13 14 14 15 import javax.swing.JOptionPane; … … 52 53 // bounding box. Otherwise nodes may get deleted that are necessary by 53 54 // unloaded ways (see Ticket #1594) 54 for (Node node : way. nodes) {55 for (Node node : way.getNodes()) { 55 56 boolean isInsideOneBoundingBox = false; 56 57 for (Bounds b : bounds) { … … 105 106 Way wnew = new Way(w); 106 107 107 int toI = wnew. nodes.size() - 1;108 for (int i = wnew. nodes.size() - 1; i >= 0; i--) {108 int toI = wnew.getNodesCount() - 1; 109 for (int i = wnew.getNodesCount() - 1; i >= 0; i--) { 109 110 CollectBackReferencesVisitor backRefsV = new CollectBackReferencesVisitor(Main.main.getCurrentDataSet(), false); 110 backRefsV.visit(wnew. nodes.get(i));111 backRefsV.visit(wnew.getNode(i)); 111 112 boolean used = false; 112 113 if (backRefsV.data.size() == 1) { 113 used = Collections.frequency(w. nodes, wnew.nodes.get(i)) > 1;114 used = Collections.frequency(w.getNodes(), wnew.getNode(i)) > 1; 114 115 } else { 115 116 backRefsV.data.remove(w); … … 117 118 } 118 119 if (!used) 119 used = wnew. nodes.get(i).isTagged();120 used = wnew.getNode(i).isTagged(); 120 121 121 122 if (used) { … … 127 128 128 129 HashSet<Node> delNodes = new HashSet<Node>(); 129 delNodes.addAll(w. nodes);130 delNodes.removeAll(wnew. nodes);131 132 if (wnew. nodes.size() != w.nodes.size()) {130 delNodes.addAll(w.getNodes()); 131 delNodes.removeAll(wnew.getNodes()); 132 133 if (wnew.getNodesCount() != w.getNodesCount()) { 133 134 Collection<Command> cmds = new LinkedList<Command>(); 134 135 cmds.add(new ChangeCommand(w, wnew)); … … 143 144 ArrayList<Node> ns = new ArrayList<Node>(); 144 145 simplifyWayRange(wnew, from, to, ns, thr); 145 for (int j = to - 1; j > from; j--) 146 wnew.nodes.remove(j); 147 wnew.nodes.addAll(from + 1, ns); 146 List<Node> nodes = wnew.getNodes(); 147 for (int j = to - 1; j > from; j--) { 148 nodes.remove(j); 149 } 150 nodes.addAll(from + 1, ns); 151 wnew.setNodes(nodes); 148 152 } 149 153 } … … 154 158 */ 155 159 public void simplifyWayRange(Way wnew, int from, int to, ArrayList<Node> ns, double thr) { 156 Node fromN = wnew. nodes.get(from), toN = wnew.nodes.get(to);160 Node fromN = wnew.getNode(from), toN = wnew.getNode(to); 157 161 158 162 int imax = -1; 159 163 double xtemax = 0; 160 164 for (int i = from + 1; i < to; i++) { 161 Node n = wnew. nodes.get(i);165 Node n = wnew.getNode(i); 162 166 double xte = Math.abs(EARTH_RAD 163 167 * xtd(fromN.getCoor().lat() * Math.PI / 180, fromN.getCoor().lon() * Math.PI / 180, toN.getCoor().lat() * Math.PI … … 172 176 if (imax != -1 && xtemax >= thr) { 173 177 simplifyWayRange(wnew, from, imax, ns, thr); 174 ns.add(wnew. nodes.get(imax));178 ns.add(wnew.getNode(imax)); 175 179 simplifyWayRange(wnew, imax, to, ns, thr); 176 180 }
Note:
See TracChangeset
for help on using the changeset viewer.
