The Haversine formula in o.a.s.s.f.d.DistanceUtils.java gives these
results for a 0.1 degree difference in miles:

equator horizontal 0.1 deg: lat/lon 0.0/0.0     -> 396.32050000000004
equator vertical   0.1 deg: lat/lon 0.0/0.0     -> 396.32050000000004
NYC horizontal     0.1 deg: lat/lon -72.0/0.0   -> 383.33093669272654
NYC vertical       0.1 deg: lat/lon -72.0/0.0   -> 396.32049999997747
arctic horizontal  0.1 deg: lat/lon 89.0/0.0    -> 202.13129169290906
arctic vertical    0.1 deg: lat/lon 89.0/0.0    -> 396.32049999997747
N. Pole horizontal 0.1 deg: lat/lon 89.8/0.0    -> 103.61036292825034
N. Pole vertical   0.1 deg: lat/lon 89.8/0.0    -> 396.3205000000338

That is, a horizontal shift of 0.1 at the equator, New York City's
latitude, 1 degree south of the North Pole and almost-almost-almost at
the North Pole, these are the distances in miles.
The latitude changes make perfect sense, but one would expect the
longitudes to shrink as well.

Here is the code, added to DistanceUtils.java. What am I doing wrong?


  public static void main(String[] args) {
          show("equator horizontal 0.1 deg", 0.0, 0.0, 0.0, 0.1);
          show("equator vertical   0.1 deg", 0.0, 0.0, 0.1, 0.0);
          show("NYC horizontal     0.1 deg", -72, 0.0, -72, 0.1);
          show("NYC vertical       0.1 deg", -72, 0, -72.1, 0.0);
          show("arctic horizontal  0.1 deg", 89.0, 0.0, 89.0, 0.1);
          show("arctic vertical    0.1 deg", 89.0, 0.0, 89.1, 0.0);
          show("N. Pole horizontal 0.1 deg", 89.8, 0.0, 89.8, 0.1);
          show("N. Pole vertical   0.1 deg", 89.8, 0.0, 89.9, 0.0);
  }

  private static void show(String label, double d, double e, double f,
double g) {
          System.out.println(label + ": lat/lon " + d + "/" + e + " \t-> " +
haversine(d,e,f,g, 3963.205));
  }

(This is from the Solr trunk.)

-- 
Lance Norskog
goks...@gmail.com

Reply via email to