Elevation plot possible (from track with elevation datas)?

Is it possible to create a datafield/app that shows the elevation of a track with has altitude dates in the track? I mean, to see the elevation plot, before I start the tour and to show the position and the upcoming elevation during a tour?

The elevation app in the iq store shows only the covered elevation, as far as I understand it.
Sorry for my english, but I hope you understand what I mean...
  • Former Member
    Former Member over 10 years ago
    With a data field that's not possible. A data field has only access to some data on the current activity. It can store some data for the covered route, but has limited memory available and can't see into the future.

    With an app that would be possible if it has access to that data from either a .fit file on the device or via a web service.
  • Hallo devolpers,

    I have to ask again:

    if I send a course with elevation data via basecamp to the f3, I can see an elevation profile on the f3:

    menu>navigation>courses> choose a course> (scroll down to) elevation profile>start

    Looks like this:

    https://forum.garmin.de/attachment.php?attachmentid=9364&d=1426963050


    Wouldn`t it be possible to add this elevation profile as a single data field app, so that I would be able to choose it during an activity as a data page?
  • ConnectIQ applications do not have have access to files you upload to the device. FULL STOP.
    ConnectIQ applications do not have access to full details for previous activities stored on the device. FULL STOP.

    As mentioned above, you could theoretically write a full blown application or widget (not a data field) that pulled the data elevation data from a web service. I'm fairly certain that using an application to retrieve and display this data would preclude using an activity profile while following the elevation plot. i.e., you can't us the Running profile to record your activity and still display the elevation plot.

    If someone wanted, they could collect all of the elevation data from a course (fit file, tcx file or whatever) and build that data into the a data field. This data field would only have the elevation profile for that single course, and would have to be rebuilt with new elevation data if you wanted it to work with any other course. Again, as mentioned above, the amount of memory available to a data field is very limited, so for a long course you might be limited with respect to the number of data points you could store.

    Travis
  • There is only one problem with datafields: limited memory available.
    Would be great to just prepare elevation profile for upcomping event like mountain marathon or ultramarathon.
    Already tried to prepare bitmap elevation profile or just array of elevation values but for now it's very limited, like no more then couple hundreds points.
    Not even mention to look at a fit file to read elevation. That would be superb.
  • A smart implementation could probably store a hundred points in memory, interpolate between them for display, and then page in new points as necessary. I think it would be possible but I don't see any use if the user experience would be bad... Having a custom data field for every course would be frustrating for everyone. Requiring users to generate an elevation table and enter it into the settings for a data field (once Garmin adds support for this), would not be ideal either.

    Travis
  • I don't see any problem with user experience if you have to install one datafield called for eg. Transgrancanaria Elevation for such event like Transgrancanaria 125km.
    People are preparing for a year for an event and having to install a datafield is their smallest problem.
    From developers point of view, preparing such datafield is trival. Now I have about 300 elevation points in my resources.xml inside <string> and memory limit already reached.
    The same if I use array of numbers. All that because even single number is an object. Maybe having something like array of just numbers(not objects) would use less memory.
    Of course reading elevation directly from some fit would be the best!

    I think such feature is already possible in feinx1/2/3 because it is possible to have a track on a map(track being read from fit history). So why not possible to have an elevation drawed instead of a track?
  • Just because a feature is available on a device does not make it possible to do from within the ConnectIQ framework. The native applications have fewer limitations to live within.

    If you want to talk about implementation details, it seems you need to store the elevation and gps coordinates for some subset of the sample points on the course. Once you have the original data (conveniently provided on the website), you could pre-process it to find the elevation and latitude and longitude ranges (the min and max values). Once you have that information you can recode the data to take up less memory. You could store the gps coordinate of the center of the course bounding box, and then recode the latitude/longitude data as the offsets from that position, using 11 bits for each, and then store the elevation data in 10 bits. That would pack each sample into a single Number, which is 32-bits. You should be able to store about 2048 data points in 8k of storage. You could filter the elevation data down to 2048 points, and then hard-code those into an array in the application.

    For a course like the Transgrancanaria 125, with a min elevation of 0m and max of 2000m you could store the elevation in 10 bits and still be accurate to 2m, and the latitude/longitude would be accurate to about 20m. The application would convert actual coordinates to this alternate format and then find the nearest sample to that position value to find where you were on the elevation map.
  • Thanks for ideas!

    Actually what I ended up with is just list of elevation points like: 10,13,16,20,... etc.
    After conversion I have each elevation point every 100meters. That way I don't even need gps position just current distance. Of course it will be very inaccurate in case of lost in the woods...
    So I will look for the best solution from here.

    I don't know if your method is that simple. You want to pack elevation, lat and lon in one Number. I have only elevation in one Number and already can have only one array of 300 numbers preloaded without simulator Out of Mem(or crash).
    I guess the Number is not 32bit because it is an Object in run time - must be much more mem. It can store 32bit data but when used it is more.

    After some testing having array of number preloaded into datafield consumes event more memory than having those numbers stored in resources.xml as <string id="elev">10,13,16,20,...</string>
    Just try to compile datafield with an array of 1000 numbers, not possible.

    Another approach is to have elevation profile split into 4bit bitmaps(smaller then 100px width!) and load a new one when its needed. But thats also memory consuming and not all memory is freed after loading a new bitmap.