Leaflet.Heightgraph
Leaflet.Heightgraph copied to clipboard
Handle missing elevation data
Heightgraph currently doesn't handle cases where part or all of the data points have coordinates, but no elevation/altitude value.
This results in incomplete graphs and NaN errors/warnings, see comparison below and the Plunker console:
current | expected |
---|---|
Plunker | Plunker, see also Elevation#84 |
![]() |
![]() |
Diagrams shown are variants of the same elevation profile with missing values at different positions:
- original
- middle (left of second segment)
- left
- right
- all missing
Reasons for missing elevation data e.g. are using CGIAR CSI SRTM that has no data beyond 60 degrees north and south and outside shorelines, see abrensch/brouter#137, nrenner/brouter-web#203.
The suggested solution would be to show missing elevation values as gaps by using a d3 defined accessor function, e.g. here:
d3Area().defined(d => d.altitude !== undefined && d.altitude !== null)
I guess I could provide a PR if no one else feels like it.
Have you considered filling emtpy slots on your side? That way you could interpolate the elevation or fill it with 0 etc., depending on your needs.
I am not sure if this plugin should fix "incorrect"/"missing" data?
A corresponding issue is Elevation #63 with a few upvotes and another PR, so we're not the only ones.
While interpolation or assuming 0 might work for some cases, it will be misleading or just wrong for others. I personally would expect missing elevation data to be reflected in the graph as such.
Setting it to 0 would result in the same rendering result as you shown above wouldn't it?
The difference would then be that when hovering over the entry that instead of showing 0 there would be something like "not defined"? That said, feel free to propose a PR and check back with @TheGreatRefrigerator if this features is desired for this repo.
Setting it to 0 would result in the same rendering result as you shown above wouldn't it?
Not quite. The connection would be different and rest would only look the same because this artificial example has a min height of 0 and I disabled extending the elevations bounds for better comparison.
With a more realistic example the differences are:
- the graph outline is flattened when the elevation range is extended to 0
-
defined
cuts the graph off with a vertical line, while with 0 it connects normally with a diagonal line to the next data point - due to elevation bounds extension by 10%, the graph visibly continues at height 0, making the filling look like an actual height of 0
0 filling:
defined
: