1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

add great circle costs

This commit is contained in:
oblonski 2014-11-28 10:49:38 +01:00
parent fa7e942ad7
commit 843bd18be2
2 changed files with 19 additions and 3 deletions

View file

@ -42,7 +42,7 @@ public class GreatCircleDistanceCalculator {
* @param coord2 - to coord
* @return great circle distance
*/
public static double calculateDistance(Coordinate coord1, Coordinate coord2, DistanceUnit unit){
public static double calculateDistance(Coordinate coord1, Coordinate coord2, DistanceUnit distanceUnit){
double lon1 = coord1.getX();
double lon2 = coord2.getX();
double lat1 = coord1.getY();
@ -56,7 +56,7 @@ public class GreatCircleDistanceCalculator {
double a = Math.sin(delta_Lat / 2) * Math.sin(delta_Lat / 2) + Math.sin(delta_Lon / 2) * Math.sin(delta_Lon / 2) * Math.cos(lat1) * Math.cos(lat2);
double c = 2 * Math.asin(Math.sqrt(a));
double distance = R * c;
if(unit.equals(DistanceUnit.Meter)){
if(distanceUnit.equals(DistanceUnit.Meter)){
distance = distance * 1000.;
}
return distance;

View file

@ -35,10 +35,26 @@ public class GreatCircleDistanceCalculatorTest {
double greatCircle = GreatCircleDistanceCalculator.calculateDistance(
Coordinate.newInstance(lon1,lat1),
Coordinate.newInstance(lon2,lat2)
Coordinate.newInstance(lon2,lat2),
GreatCircleDistanceCalculator.DistanceUnit.Kilometer
);
Assert.assertEquals(600,greatCircle,30.);
}
@Test
public void testMeter(){
double lon1 = 8.3858333;
double lat1 = 49.0047222;
double lon2 = 12.1333333;
double lat2 = 54.0833333;
double greatCircle = GreatCircleDistanceCalculator.calculateDistance(
Coordinate.newInstance(lon1,lat1),
Coordinate.newInstance(lon2,lat2),
GreatCircleDistanceCalculator.DistanceUnit.Meter
);
Assert.assertEquals(600000,greatCircle,30000.);
}
}