I am working on an ITS(Intelligent Transport System). So I have to calculate the EAT(Estimated Arrival Time) at the bus stop for a bus. Now I have the two points(lat, lng) of stop and position of vehicle at present. So I have to calculate distance. next I ll get speed SO I can calculate the Arrival Time at the stop for bus. My problem is, I am using this method to calculate distance between two points,
private double distance(double lat1, double lon1, double lat2, double lon2, char 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 == 'K') {
dist = dist * 1.609344;
} else if (unit == 'N') {
dist = dist * 0.8684;
}
return (dist);
}
What I am thinking is, it calculates the straight line distance between two points. It wont happen in real time. because a vehicle travel by road. So is there any better solution or algorithm to find out the distance between two places. Please any one help me in this.