001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm;
003
004import java.util.Comparator;
005
006/**
007 * Provides some node order , based on coordinates, nodes with equal coordinates are equal.
008 *
009 * @author viesturs
010 */
011public 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}