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 }