Menu

An Altitude of NMEA file is not correct.

2008-12-20
2013-05-02
  • Kyung Soo Baik

    Kyung Soo Baik - 2008-12-20

    Hi.

    I'm a user of M241 GPS Data logger.
    Thank you for your good software.

    But there is a one problem on BT747 V1.63.7 for desktop version.
    When creating a NMEA file, its altitude is not recorded correctly.
    In output setting, I choose a "WGS84 to MSL" and create a KML and NMEA file.
    But the altitude of both file is not same.
    A altitude on NMEA file is lower than KMLs.
    In NMEA file, altitude is calculated "MSL-Geoid diff".

    Would please check it.
    Thank you.

     
    • Mario De Weerd

      Mario De Weerd - 2008-12-20

      Hi

      The height is in the GPGGA NMEA sentence:

      $GPGGA,131940,4850.7948,N,00230.9513,E,1,,,20.957,M,47.6,M,,*5A

      Here, "47.6,M"  indicates the GeoID offset (MSL) in meters versus the WGS84 reference, and, 20.957 is the altitude in reference to the GeoID (MSL) in meters 20.957.

      The value 47.6 + 20.957 = 68.557  will correspond to the value that BT747 is requested to convert to.
      So if you ask 'MSL', then 68.557 will be related to MSL.

      The fact is that for the NMEA output you need to keep WGS84 and for KML output you need to request MSL.

      The version that you are using should be recent enough to be able to select 'Automatic'.
      In that mode, BT747 assumes a given reference used in the input format and translates it to the references that is assumed to be needed in the output format.

      The following table is taken from the current source and indicates what assumptions are made:

                  { Model.CSV_LOGTYPE, HEIGHT_WGS84 },
                  { Model.TRK_LOGTYPE, HEIGHT_MSL },
                  { Model.KML_LOGTYPE, HEIGHT_MSL },
                  { Model.PLT_LOGTYPE, HEIGHT_MSL },
                  { Model.GPX_LOGTYPE, HEIGHT_WGS84 },
                  { Model.NMEA_LOGTYPE, HEIGHT_WGS84 },
                  { Model.GMAP_LOGTYPE, HEIGHT_MSL },
                  { Model.TRL_LOGTYPE, HEIGHT_WGS84 },
                  { Model.BIN_LOGTYPE, HEIGHT_WGS84 },
                  { Model.SR_LOGTYPE, HEIGHT_MSL },
                  { Model.KMZ_LOGTYPE, HEIGHT_MSL },
                  { Model.ARRAY_LOGTYPE, HEIGHT_MSL }, };

      I hope this helps and that you can conclude that behaviour is as expected.  If it is not, I'll look further.

       
    • Kyung Soo Baik

      Kyung Soo Baik - 2008-12-22

      Thank you Mario.

      But I don't know the meaning of four statement "keepheight, WGS84 to MSL, automatic, MSL to WGS84"

      Here is a NMEA log captured by BeelineGPS
      $GPGGA,103910.333,3723.2599,N,12707.4957,E,1,10,0.90,39.7,M,19.9,M,,*5F

      and below a log which is converted from M241 binary to NMEA.
      $GPGGA,103910,3723.2597,N,12707.4959,E,1,10,0.90,40.740,M,18.6,M,,*46 : keepheight
      $GPGGA,103910,3723.2597,N,12707.4959,E,1,10,0.90,22.073,M,18.6,M,,*45 : WGS84 to MSL
      $GPGGA,103915,3723.2713,N,12707.4831,E,1,10,0.90,42.020,M,18.6,M,,*41 : automatic
      $GPGGA,103910,3723.2597,N,12707.4959,E,1,10,0.90,59.407,M,18.6,M,,*4E : MSL to WGS84

      is it right value?

       
      • Mario De Weerd

        Mario De Weerd - 2008-12-22

        - Keep height: no transformation of the value.
        - WGS84 to MSL: suppose original value is relative to WGS84 and calculate value relative to the mean sea level (GEOID).
        - Automatic: transformation based ion the input file format and output file format.  In your case: input = bin = WGS84, and, output = NMEA = WGS84 => no transformation.
        - MSL to WGS84: suppose original value is relateive to MSL and calculate WGS84.

        In BeelingGPS capture:
        - MSL/GEOID:     19.9 M
        - ALTITUDE:        39.7 M
        - TOTAL WGS84:  59.6

        In BT747 extracts (not always at the same position/time!).
        a) keepheight: WGS84 = 40.74+18.6 = 59.34 M
        b) WGS84to   : WGS84 = 22.07+18.6 = 40.81 M
        c) automatic  : WGS84 = 40.02+18.6 = 58.62 M
        d) MSL to       : WGS84 = 59.40+18.6 = 78.00 M

        In all cases: 18.6 M for the geoid while 19.9M captured by beeline.  The device uses a lookup table only while BT747 does an interpolation of the lookup table values.  Further, the values in the table are not necessarilly 100% the same.  The value logged by the device is the sum as in the calculations above.

        a) The value is unchanged.  The sum is close to the Beeline value.
        b) The new total is relative to the MSL.  The behaviour is as expected, but the NMEA data is wrong.
        c) Good!  Input reference and output reference are the same.  The result is similar to a), but this is not at the same time (which explains the difference).
        d) Perfect!  The input is supposed to be MSL/GEOID and we add that offset to the output value.  Behaviour is as expected, but this is not appropriate for NMEA.

         
    • Kyung Soo Baik

      Kyung Soo Baik - 2008-12-23

      Thank you for your kind explanation.
      I have misunderstood that "WGS84 to MSL" corresponds to "hght-geoid diff" option in superwaba version.
      Anyway if it were not for BT747, my GPS would go to trash can.:-)

       
    • Kyung Soo Baik

      Kyung Soo Baik - 2008-12-23

      Ah..I confused just a little.
      now I see what you meant.
      When I want to convert an altitude of my log into MSL,
      I must select a "WGS84 to MSL" for csv, kml, gpx.
      and select "keepheight" or "automatic" for nmea.
      is it right?

       
      • Mario De Weerd

        Mario De Weerd - 2008-12-23

        Almost right.  For your purposes you can keep 'Automatic' except if you want MSL height in the CSV file.  I am changing the default for the GPX file to MSL in 1.65.0.

        In the original application, the CSV has WGS84, this is why I do it that way.

        The other options are available for those that would like other 'specific' behaviour.  E.g. to undo previous altitude conversions.

         

Log in to post a comment.