Вопрос

ПРИВЕТ

Я пытался реализовать простой GPS-трекер. Поэтому используется

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);  

Тогда я использовал

public void onLocationChanged(Location location) {

Метод для чтения высоты моего текущего местоположения.

Но я действительно не знаю, какое местоположение .getAttitue () возвращается. Документ говорит, что он возвращает высоту. Но это в метрах? или лжи? Если я положу телефон на стол рядом со мной, это значение меняется между 500 и -500 ??

Как это действительно работает ???

Это было полезно?

Решение

Значение высоты, которое вы получаете, находится в метрах от GPS (WGS84) Ссылка эллипсоида а не из геоид.

Из моего собственного опыта GPS действительно плохие на высотных значениях.

Я прочитал это на Статус GPS ВОПРОСЫ-ОТВЕТЫ:

GPS не сообщает высоту выше среднего уровня моря, скорее система GPS сравнивает высоту к эллипсоидам WGS84, который может быть выше или ниже фактического уровня моря. В разных частях Земли это может быть выключено более чем на 200 метрах (в зависимости от массы распределения земли). Например, поверхность Геоид вокруг Флориды находится над средним уровнем моря на хорошие 30-40 метров, что означает, что стоя на берегу покажет вам -30 м по высоте. Это нормально, а не ошибка, и вызвана тем, что высота относительно искусственной опорной поверхности, а не на уровень моря. Если вы заинтересованы в этой теме, я рекомендую прочитать Средний уровень моря, GPS и геоид.

Другие советы

Старый пост, я Rekon, но кто-то все еще будет заинтересован. При прослушивании GPS вы можете анализировать предложение NMEA GPGGA (http://aprs.gids.nl/nmea/#gga), в котором есть геоид высота (высота геоида выше WGS84 эллипсоида). Просто вычитайте эту вершину от тотальты, возвращаемой стоимостью, один и у вас будет более точное значение высоты.

Редактировать через несколько месяцев использования и обратной связи, полученной от пользователей моего приложения

Лучшее решение состоит в том, чтобы получить напрямую значение высоты в предложении GPGGA:

double GGA_ALTITUDE = 0d;
private static final String NMEA_GGA = "$GPGGA";    
private static final int altitude_element_id = 9;

@Override
public void onNmeaReceived(long timestamp, String nmea) {
    foundSats = true;
    // check that this is an RMC string
    if (nmea.startsWith(NMEA_GGA)) {
        String[] tokens = nmea.split(",");
        try {
            // get orthometric elevation
            String elevation = tokens[altitude_element_id];             
            if (!elevation.equals("")) {
                Log.d("NMEA", "ortho elev: " + ortho);
                GGA_ALTITUDE = Double.parseDouble(elevation);                   
            }
        } catch (Exception ex) {
            Log.e("NMEA", "onNmeaReceived: "
                    + ex.getMessage());

            onNmeaException(ex.getMessage());               
            ex.printStackTrace();
        }
    } 
}

Я предполагаю, что ваш стол расположен внутри здания. Если вы получите GPS Fix в здании, вы не должны ожидать, что точность будет очень высокой. Должны попытаться получить точность исправления, вызывая Getaccurecy ()?

GPS просто измеряет время, когда известный сигнал отправляется из нескольких спутников. Чем больше спутников ввиду вашего приемника GPS Точнее ваша позиция будет определена относительно этих спутников. Хотя система подвержена некоторому ошибку - фоновый шум (спутниковый сигнал относительно слабый, а пространство относительно шумно), с низкой точностью в вашем приемнике, GDOP: Геометрическая диллинер точностью (все спутники, сгруппированные в одном углу неба), Рефракция сигнала из-за ионосферы, изменяющих высоты, - в целом это очень точно в определении вашего расстояния от спутника. Геометрически вам нужно как минимум 3 спутника, чтобы получить позицию и 4-го, чтобы получить высоту. Больше спутников способствуют большей точности и в некоторых более сложных приемниках (не наших телефонов, но в частности, аварийных приложений) RAIM: мониторинг ресивера автономной целостности, предоставляется на прогноз точности в области и времени, то есть перед землями самолета ...

Высота проблематично для системы GPS, потому что Земля не изгибается при математической константе. Поэтому, хотя система знает, где вы относительно спутникового спутника, теперь он должен наложить, что на математической модели Земли. В авиации более точные GPS-приемники должны иметь высоту, дополненную барометрами, а в некоторых приемниках улучшены положение из-за известного сравнения обследованных точек (WAAS и LAAS).

Это происходит, когда вы используете locationmanager.network_provider, например, поставщик местоположения, убедитесь, что вы используете locationmanager.gps_provider, как ваш любимый поставщик GPS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top