-
Notifications
You must be signed in to change notification settings - Fork 75
Recalculate ellipsoid elevation to orthometric #4210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Pull Request Test Coverage Report for Build 19369508469Details
💛 - Coveralls |
Add EGM96_15 geoid model, which recalculates ellipsoid altitudes returned by position providers. Expose this information in GPS information panel.
8f9da6f to
131f97b
Compare
Provider returns now WGS84 ellipsoidal height on iOS
Create new 3D transform utils function. Fix coordinate order passing. Rework android 15+ Qt positioning workaround to VCPKG patch.
|
PR should be finally ready now for review |
|
@tomasMizera I think you could give it a look as well. |
| mapSettings->destinationCrs(), | ||
| crsGPS, | ||
| PositionKit::positionCRS(), | ||
| QgsCoordinateTransformContext(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not directly relevant to this PR, but we should not use empty QgsCoordinateTransformContext() - we should use coordinate transform context from the active project everywhere, to avoid some subtle transformation errors (e.g. when project admin picks a non-default transform). Worth checking elsewhere too!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this is worth to do as a separate PR and go through the whole code base. I'll create a new issue for this and try to tackle it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see #4221
| QGeoPositionInfo location(QGeoCoordinate(newLocation.coordinate.latitude, | ||
| newLocation.coordinate.longitude, | ||
| - newLocation.altitude), | ||
| + newLocation.ellipsoidalAltitude), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this safe? I have read ellipsoidalAltitude is only available in iOS 15+ ... do we support older versions? if we do, what happens there?
Also, what happens with external GNSS with mock location - is the ellipsoidal altitude populated correctly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- We support only iOS 16+, so there's no need to check for lower version.
- I'll have to check the external GNSS behaviour, haven't thought much about that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wonder-sk there is not an easy way to debug that without access to the device, I'll ask our testing team to try it. However, I would postpone this issue for a bit and the whole bundle of enhancements will include also fix for this.
fixes #4165
fixes #2615
This PR adds EGM96_15 geoid model internally to recalculate ellipsoid heights returned by position providers to orthometric heights by default. Also, the information of which model was used is exposed to users in GPS information panel. There are some necessary fixes to Qt Positioning to force

InternalPositioningProviderto return ellipsoid height on both android and iOS.Besides this, some minor refactoring was done to prepare the rest of the codebase to support user supplied geoid models.