سؤال

أهلاً

لقد حاولت تنفيذ جهاز تعقب GPS بسيط.ولذلك يستخدم

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

ثم استخدمت

public void onLocationChanged(Location location) {

طريقة لقراءة ارتفاع موقعي الحالي.

لكنني لا أعرف حقًا ما الذي يُرجعه Location.getAltitude().تقول الوثيقة أنها ترجع الارتفاع.ولكن هل هذا بالأمتار؟أو قدم؟إذا وضعت الهاتف على المكتب بجانبي، تتغير هذه القيمة بين 500 و -500؟؟

كيف يعمل هذا حقا؟؟؟

هل كانت مفيدة؟

المحلول

قيمة الارتفاع التي تحصل عليها هي بالأمتار نظام تحديد المواقع (WGS84) الاهليلجي المرجعي وليس من Geoid.

من تجربتي الخاصة فإن نظام تحديد المواقع العالمي (GPS) سيء جدًا عند قيم الارتفاع.

قرأت هذا على حالة نظام تحديد المواقع التعليمات:

لا يقوم نظام تحديد المواقع العالمي (GPS) بالإبلاغ عن الارتفاع فوق متوسط ​​مستوى سطح البحر، بل يقوم نظام GPS بمقارنة الارتفاع بالمجسم الإهليلجي المرجعي WGS84 والذي قد يكون أعلى أو أقل من مستوى سطح البحر الفعلي.وفي أجزاء مختلفة من الأرض يمكن أن يكون بعيدًا بأكثر من 200 متر (اعتمادًا على التوزيع الشامل للأرض).على سبيل المثال، سطح المجسم الأرضي حول فلوريدا أعلى من متوسط ​​مستوى سطح البحر بما يتراوح بين 30 إلى 40 مترًا، مما يعني أن الوقوف على الشاطئ سيظهر لك ارتفاعًا بمقدار -30 مترًا.وهذا أمر طبيعي وليس خطأ، ويعود سببه إلى أن الارتفاع نسبي إلى سطح مرجعي صناعي وليس إلى مستوى سطح البحر.إذا كنت مهتمًا بهذا الموضوع أنصحك بقراءته متوسط ​​مستوى سطح البحر، ونظام تحديد المواقع العالمي (GPS)، والمجسم الأرضي.

نصائح أخرى

Post Old ، أنا rekon ، لكن شخص ما قد لا يزال مهتمًا. أثناء الاستماع إلى GPS ، يمكنك تحليل الجملة NMEA GPGGA (http://aprs.gids.nl/nmea/#gga) ، حيث يوجد ارتفاع جغرافي (ارتفاع Geoid فوق 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 في مبنى ، فلن تتوقع أن تكون الدقة مرتفعة للغاية. يجب أن تحاول الحصول على دقة الإصلاح عن طريق استدعاء getAccuracy ()؟

GPS يقيس ببساطة الوقت الذي يتم فيه إرسال إشارة معروفة من عدة أقمار صناعية. كلما زاد عدد الأقمار الصناعية في ضوء جهاز استقبال GPS ، كلما تم تحديد موقعك أكثر دقة بالنسبة لتلك الأقمار الصناعية. على الرغم من أن النظام عرضة لبعض ضوضاء الخلفية في الخلفية (إشارة الأقمار الصناعية ضعيفة نسبيًا والمساحة صاخبة نسبيًا) ، وقطعة زمنية منخفضة الدقة في جهاز الاستقبال الخاص بك ، GDOP: التلاشي الهندسي للدقة (جميع الأقمار الصناعية المجمعة في زاوية واحدة من السماء) ، ، الانكسار من الإشارة بسبب ارتفاعات تغيير الأيونوسفير ،- بشكل عام هو دقيق للغاية في تحديد المسافة الخاصة بك من القمر الصناعي. من الناحية الهندسية ، تحتاج إلى 3 أقمار صناعية على الأقل للحصول على موقف و 4 لاتفاق. يسهم المزيد من الأقمار الصناعية في دقة أكبر وفي بعض أجهزة الاستقبال الأكثر تعقيدًا (وليس هواتفنا ولكن على وجه التحديد تطبيقات الطيران) RAIM: يتم توفير مراقبة النزاهة المستقلة للمستقبل ، إلى الدقة المتوقعة في منطقة ووقت أي قبل أراضي الطائرة ...

الارتفاع هو مشكلة بالنسبة لنظام GPS لأن الأرض لا تنحني في الثابت الرياضي. لذا ، بينما يعرف النظام أين أنت نسبيًا إلى القمر الصناعي ، يجب الآن تراكب ذلك على نموذج رياضي للأرض. في الطيران ، يجب أن يكون لاستقبال GPS الأكثر دقة ارتفاعًا مستكملًا مع أجهزة قياس الباروم وفي بعض المستقبلات المحسّنة بسبب مقارنة معروفة للمسح (WAAS و LAAS).

يحدث هذا حيث يمكنك استخدام موقع LocationManager.network_provider مثل موفر الموقع ، تأكد من استخدام موقع locationmanager.gps_provider مثل مزود GPS المفضل لديك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top