001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.data.osm;
003
004 import java.util.Comparator;
005
006 /**
007 * Provides some node order , based on coordinates, nodes with equal coordinates are equal.
008 *
009 * @author viesturs
010 */
011 public class NodePositionComparator implements Comparator<Node> {
012 @Override
013 public int compare(Node n1, Node n2) {
014
015 if (n1.getCoor().equalsEpsilon(n2.getCoor()))
016 return 0;
017
018 double dLat = n1.getCoor().lat() - n2.getCoor().lat();
019 if (dLat > 0)
020 return 1;
021 if (dLat < 0)
022 return -1;
023 double dLon = n1.getCoor().lon() - n2.getCoor().lon();
024 if (dLon == 0)
025 return 0;
026 return dLon > 0 ? 1 : -1;
027 }
028 }