import java.awt.geom.Point2D; import java.math.BigDecimal; import java.math.RoundingMode; import org.geotoolkit.referencing.GeodeticCalculator; public class TestGeotoolkit { /** * @param args */ public static void main(String[] args) { double sourceLocLon = 121.5386; double sourceLocLat = 38.965667; double targetLocLon = -58.817222; double targetLocLat = -38.483056; //MAX DISTANCE in KM: 19983.171 Point2D startingPoint = new Point2D.Double(sourceLocLon, sourceLocLat); Point2D destinationPoint = new Point2D.Double(targetLocLon, targetLocLat); GeodeticCalculator calc = new GeodeticCalculator(); System.out.println(String.format("Setting starting point to: LG %.5f, LT %.5f", startingPoint.getX(), startingPoint .getY())); calc.setStartingGeographicPoint(startingPoint); System.out.println(String.format("Setting destination point to: LG %.5f, LT %.5f", destinationPoint.getX(), destinationPoint.getY())); calc.setDestinationGeographicPoint(destinationPoint); BigDecimal distanceInKilometers = new BigDecimal(calc.getOrthodromicDistance() / 1000); distanceInKilometers = distanceInKilometers.setScale(3, RoundingMode.CEILING); System.out.println("Distance in KM: " + distanceInKilometers.toString()); } }