2013-03-12 3 views
4

Я пытаюсь определить, находятся ли два местоположения (каждый со своими значениями широты и долготы) на некотором расстоянии друг от друга, например, радиусом 3 мили. У меня есть двойные значения для представления широты и долготы каждого местоположения.Расчет радиуса с долготой и широтой

//Location 1 
Double lattitude1 = 40.7143528; 
Double longitude1 = -74.0059731; 

//Location 2 
Double lattitude2 = 33.325; 
Double longitude2 = 44.422000000000025; 

Мне интересно, как я бы определить, если эти два места находятся в пределах друг друга радиуса или нет, потому что я не совсем уверен, как это сделать с этим типом значения.

ответ

0

Чтобы получить расстояние между двумя точками, вам просто нужно использовать этот фрагмент кода.

Point2D p1 = new Point2D(lattitude1, longitude2); 
Point2D p2 = new Point2D(lattitude2, longitude2); 

double distanceBetweenTwoPoints = (double)Math.sqrt((double)Math.pow((p1.x - p2.x), 2.0) + (double)Math.pow((p1.y - p2.y), 2.0)); 

--- EDITED ---

Пожалуйста, проверьте комментарии в течение двух координат (не 2D) решения.

+1

Это дает прямое расстояние между двумя точками в 2D пространстве. То, что он ищет, - это кратчайшее расстояние между двумя точками на сфере, движущейся по сфере. Таким образом, расстояние Великого Круга - это то, что ему нужно. – Geoffrey

+1

Справедливости ради следует отметить, что предел на расстоянии составляет 3 мили, а кривизна Земли в течение 3 миль не была бы ужасно значимой по сравнению с эффектами нечетного локального холма в локальной топологии. :) –

+0

Чтобы получить расстояние между координатами, он должен прочитать это сообщение (http://stackoverflow.com/questions/365826/calculate-distance-between-2-gps-coordinates). Здесь есть более полное объяснение (http://www.movable-type.co.uk/scripts/latlong.html). Извините за мой другой ответ. –

2

См Great Circle distance

double CoordDistance(double latitude1, double longitude1, double latitude2, double longitude2) 
{ 
    return 6371 * Math.acos(
     Math.sin(latitude1) * Math.sin(latitude2) 
     + Math.cos(latitude1) * Math.cos(latitude2) * Math.cos(longitude2 - longitude1)); 
} 

Если широта и долгота в градусах преобразовать их в радианах.

Смежные вопросы