2014-12-26 4 views
2

Предположим, у нас есть два beacons, расположенных по обеим сторонам дороги. Мы знаем их latitude и longitude, где они расположены (мы рассматриваем их как местоположение). Мы также знаем distance в метрах между этими двумя beacons (измеренными с использованием Формулы Хаверсина). Наше устройство перемещается между (внутри диапазона этих маяков) этими двумя точками. Есть ли какая-либо функция, которая поможет нам рассчитать нашу текущую позицию на основе расстояния между двумя маяками или на основе расстояния от устройства до одного маяка? Как я могу найти местоположение устройства на основе этих данных, или есть что-то, что будет полезно для достижения того, что я хочу?Пункт поиска между двумя географическими местоположениями маяков

КОРОЧЕ: Я хочу знать, где пользователь находится между двумя BEACONS без использования GPS системы, но данные у меня от маяка (в данном случае: Точные Beacons местоположения, точное расстояние от пользователя до маяка и точное расстояние между двумя маяками)

в качестве иллюстрации: (Filled Black dots являются BEACONS с воображаемым Range, Red dots некоторые user unknown positions и Green Lines являются Known Distances, мы также знаем, что latitude and longitude черных точек) на основе этих данных я хочу найти позицию пользователя (Single Red Dot)

enter image description here

примечание: Я проверил это question однако я не понял, почему место возвращается как int и почему время t включен там.

+0

Предположим, у нас есть как лат, так и длинные .. вы хотите знать, был ли мобильный между этими точками? – Jamil

+0

yeah (Lat и long из двух позиционных маяков, которые я имею в виду), но используя данные, которые у меня есть (расстояние маяка, расстояние между маяками и местами двух точек). – hrskrs

+0

Позвольте мне показать вам ответ, что вы говорите в этом вопросе. Пожалуйста, проверьте мой ответ. – Jamil

ответ

0

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

private Location BeaconLocation1() { 

     Location location = new Location("POINT_LOCATION1"); 
     location.setLatitude(45.0); 
     location.setLongitude(45.0); 
     return location; 
    } 

    private Location BeaconLocation2() { 

     Location location = new Location("POINT_LOCATION2"); 
     location.setLatitude(45.5); 
     location.setLongitude(45.5); 
     return location; 
    } 

    public class MyLocationListener implements LocationListener { 
    public void onLocationChanged(Location location) { 

      Location pointLocation1 = BeaconLocation1(); 
      Location pointLocation2 = BeaconLocation2(); 

      float distance1 = location.distanceTo(pointLocation1); 
      float distance2 = location.distanceTo(pointLocation2); 

      Toast.makeText(MapsActivity.this, 
        "Distance from Point1: "+distance1+" Meters", Toast.LENGTH_LONG).show(); 
      Toast.makeText(MapsActivity.this, 
        "Distance from Point2: "+distance2+" Meters", Toast.LENGTH_LONG).show(); 
     } 
    public void onStatusChanged(String s, int i, Bundle b) { 
     } 
    public void onProviderDisabled(String s) { 
     } 
    public void onProviderEnabled(String s) { 
     } 
} 

EDIT:

просмотреть этот

convert meters to latitude longitude from any point

+0

Это для нахождения расстояния между вашим устройством и маяком, как я понял. То, что я хочу, это найти «Point3», используя эти данные. Для обеспечения чистоты: У нас есть точечное местоположение Point1 и Point2 и расстояние между ними или до них. Существуют точки Point3, которые перемещаются внутри этих двух точек. Как я могу найти широту и долготу этой 3d-точки – hrskrs

+0

ok, чтобы вы могли узнать длину lat POINT3 на основе этих расстояний? – Jamil

+0

Вы не знаете, что длинное множество POINT3? в моем случае Lat Long Point3 является мобильным, а Point1 и point2 фиксированы. – Jamil

0

сосредоточиться на вопросе, не существует никакой формулы один выстрел, чтобы сделать все, но есть некоторые, чтобы сделать процесс Полегче. Вам придется искать вокруг в целом множество математических библиотек, чтобы найти их, хотя.

Это теория, лежащая в ее основе.

Хорошо, поэтому мы требуем широты и долготы точки 3. Я собираюсь объяснить теорию, лежащую в ее основе, поскольку для меня это слишком просто для меня.

Для этого мы будем использовать подшипник от одной точки к другой. Вы можете использовать эту ссылку для получения этой формулы: Bearing formula

Я предполагаю, что мы знаем расстояние между устройством и каждым из отдельных маяков, иначе это невозможно, если вы не хотите использовать своего рода радарный подход, чтобы идентифицировать это. Я не могу с этим поделать. Если мы это знаем, мы можем построить воображаемые круги вокруг двух маяков, используя расстояние от них до устройства в качестве их радиусов.

E.g. От устройства до маяка - 500 метров. От устройства до маяка 2 составляет 200 М.Нарисуйте воображаемый круг вокруг маяка с радуем 500 М и воображаемым кругом вокруг маяка с радиусом 200 м.

Очевидно, мы не можем создавать эти круги программно, это было бы слишком утомительно. Поэтому мы будем использовать уравнение круга: (x -h)^2 + (y - k)^2 = r^2.

Быстрая редакция средней школы показывает, что h и k - координаты x и y центра круга, смещение от декартовой равнины. мы сосредоточим нашу воображаемую картезианскую равнину в первой точке. Теперь мы разберем опорную точку до точки два, используя расстояние от точки до, чтобы построить линию от 0,0 на нашей картезианской плоскости (точка 1) до точки 2. Используя tan нашего подшипника, получим градиент линии. Теперь мы будем использовать cos и sine нашего подшипника и используя расстояние нашей гипотенузы, чтобы получить положение y и x маяка 2 относительно маяка 1 на нашей картезианской плоскости. Теперь мы вернем эти значения обратно в наши уравнения окружности:

Ваше первое уравнение всегда будет: (x -0)^2 + (y - 0)^2 = r^2. Где r - радиус в этом примере 500M. второе уравнение: (x -h)^2 + (y - k)^2 = r^2. Где r - радиус в этом примере 200M. За исключением теперь h будет вашим вычисленным значением x выше, а y будет рассчитанным значением y выше.

Теперь для сложной вечеринки. Нам нужно найти, где эти круги пересекаются. От наших приятелей при обмене математикой я получил формулу. Points of intersection

Теперь ваши круги могут иметь нуль 1 или две точки пересечения, основанные на позиции устройств. Если вы получите два результата, вам придется снова запустить всю вещь, пока устройство движется, чтобы увидеть, приближаемся мы или дальше от центров кругов. Из этого мы можем заключить, какая сторона является правильной точкой, и мы можем направить прямую линию к маяку 1 на нашей картезианской равнине, получить градиент линии, преобразовать ее в подшипник от маяка 1, а затем перестроить haversine и подшипник формулу для получения координат.

Это не очень или просто, но в конечном итоге вы попадете туда. Это скорее всего не единственное решение, поэтому не стесняйтесь искать другие. Удачи.

+0

Это неправильное представление о том, что я имел в виду. Мне не разрешено комментировать ваш вопрос. Попытайтесь прочитать, что я только что сказал. Мнимый круг не имеет ничего общего с диапазоном маяков. – TheUnkown

+0

Я думаю, что это [вопрос] (http://stackoverflow.com/questions/10119479/calculating-lat-and-long-from-bearing-and-distance) аналогичен тому, что вы говорите. Единственное, что мне нужно, это вычислить 'distance' и' bearing' и дать им как параметры этой функции. Я вычислил 'расстояние' с' Haversine'. Что относительно «подшипника»? – hrskrs

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