View Javadoc
1   package fr.ifremer.tutti.util;
2   
3   /*
4    * #%L
5    * Tutti :: Persistence
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2012 - 2014 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU General Public License as
13   * published by the Free Software Foundation, either version 3 of the
14   * License, or (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU General Public
22   * License along with this program.  If not, see
23   * <http://www.gnu.org/licenses/gpl-3.0.html>.
24   * #L%
25   */
26  
27  /**
28   * Created on 8/26/14.
29   *
30   * @author Tony Chemit - chemit@codelutin.com
31   * @since 3.7
32   */
33  public class Distances {
34      private static final double EARTH_RADIUS = 6378288.0;
35  
36      public static int computeDistanceInMeters(Float startLatitude,
37                                                Float startLongitude,
38                                                Float endLatitude,
39                                                Float endLongitude) {
40  
41          double sLat = startLatitude * Math.PI / 180.0;
42          double sLong = startLongitude * Math.PI / 180.0;
43          double eLat = endLatitude * Math.PI / 180.0;
44          double eLong = endLongitude * Math.PI / 180.0;
45  
46          Double d = EARTH_RADIUS *
47                     (Math.PI / 2 - Math.asin(Math.sin(eLat) * Math.sin(sLat)
48                                              + Math.cos(eLong - sLong) * Math.cos(eLat) * Math.cos(sLat)));
49          return d.intValue();
50      }
51  
52      public static String getDistanceInMilles(Float distance) {
53          String distanceText;
54          if (distance != null) {
55              Float distanceInMilles = distance / 1852;
56              distanceText = String.format("%.3f", distanceInMilles);
57  
58          } else {
59              distanceText = "";
60          }
61          return distanceText;
62      }
63  }