Monday, August 16, 2010

Calculate GeoDistance between two points using Java

This program help to determine Geo Distance between two points using java.
you have to pass longitude and latitude of two different points as arguments to function Distance

Java Program to calculate Geo Distance between two points :
package com.anuj.utils;

public class GeoDistance {

    private static Double geomile;
    private static Double geokil;
    private static Double NauMile;

    public static void main(String[] args) {

        geomile = distance(32.9697, -96.80322, 29.46786, -98.53506, "M");
        System.out.println(geomile + " Miles\n");
        geokil = distance(32.9697, -96.80322, 29.46786, -98.53506, "K");
        System.out.println(geokil + " Kilometers\n");
        NauMile = distance(32.9697, -96.80322, 29.46786, -98.53506, "N");
        System.out.println(NauMile + " Nautical Miles\n");

    }

    private static double distance(double lat1, double lon1, double lat2,
            double lon2, String unit) {
        double theta = lon1 - lon2;
        double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2))
                + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2))
                * Math.cos(deg2rad(theta));
        dist = Math.acos(dist);
        dist = rad2deg(dist);
        dist = dist * 60 * 1.1515;
        if (unit.equals("K")) {
            dist = dist * 1.609344;
        } else if (unit.equals("N")) {
            dist = dist * 0.8684;
        }
        return (dist);
    }

    // converts decimal degrees to radians
    private static double deg2rad(double deg) {
        return (deg * Math.PI / 180.0);
    }

    // converts radians to decimal degrees
    private static double rad2deg(double rad) {
        return (rad * 180.0 / Math.PI);
    }

}


Output :
262.6777938054349 Miles

422.73893139401383 Kilometers

228.10939614063963 Nautical Miles

Author : Anuj Patel
Blog : http://goldenpackagebyanuj.blogspot.in/

No comments:

Post a Comment