Geoid separation support for internal providers#4216
Merged
Withalion merged 16 commits intodev/geoid-supportfrom Nov 21, 2025
Merged
Geoid separation support for internal providers#4216Withalion merged 16 commits intodev/geoid-supportfrom
Withalion merged 16 commits intodev/geoid-supportfrom
Conversation
fe06747 to
66f9cf6
Compare
wonder-sk
reviewed
Nov 19, 2025
app/position/positionkit.cpp
Outdated
| QgsCoordinateReferenceSystem PositionKit::positionCrs2D() | ||
| { | ||
| return QgsCoordinateReferenceSystem::fromEpsgId( 4326 ); | ||
| return QgsCoordinateReferenceSystem::fromEpsgId( 9707 ); |
Contributor
There was a problem hiding this comment.
🤯 ... looks like there are a couple of things to fix after rebase 🙂
Pull Request Test Coverage Report for Build 19539640728Details
💛 - Coveralls |
Contributor
Author
|
@wonder-sk it should be cleaned up now 👍🏻 |
wonder-sk
approved these changes
Nov 20, 2025
| double altitude = ( *mGenerator )() % 40 + 20; // rand altitude <20,55>m and lost (0) | ||
| if ( altitude <= 55 ) | ||
| double altitude = ( *mGenerator )() % 40 + 80; // rand altitude <80,120>m and lost (0) | ||
| if ( altitude <= 120 ) |
Contributor
There was a problem hiding this comment.
is there any point of this "if"? it seems that now it will be always true if I calculate it correctly. Not sure if the code previously made much sense (altitude=0 meaning no altitude?)
Contributor
Author
There was a problem hiding this comment.
Looks like I misunderstood the code a bit too. Hopefully now it makes more sense
Add EGM96_15 geoid model, which recalculates ellipsoid altitudes returned by position providers. Expose this information in GPS information panel.
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.
89b87bc to
0984bbf
Compare
Withalion
added a commit
that referenced
this pull request
Feb 9, 2026
* Geoid separation support for external providers (#4176) * Recalculate ellipsoid elevation to orthometric (#4210) * Enhance position altitude processing Add EGM96_15 geoid model, which recalculates ellipsoid altitudes returned by position providers. Expose this information in GPS information panel. * Fix broken builds * Fix formatting * Add geoid info for iOS * Refactor PositionKit to singleton from context property * Patch ios internal positioning provider Provider returns now WGS84 ellipsoidal height on iOS * Fix elevation transform & android workaround Create new 3D transform utils function. Fix coordinate order passing. Rework android 15+ Qt positioning workaround to VCPKG patch. * Clean up & format code * Add patch TODO * Fix some review issues * Refactor code to use existing QgsCoordinateTransformContext (#4228) * Geoid separation support for internal providers (#4216) * Squashed commit of the following: commit 27b19a4 Author: Matej Bagar <matej.bagar@lutraconsulting.co.uk> Date: Mon Nov 24 15:22:46 2025 +0200 Add mock location detection for android position provider * Change default value for elevation_diff * Custom geoid support (#4238) * Fixed plural translation forms (#4183) * Fixed android build to sync projects (#4243) * Refactor support for orthometric heights on iOS * Subtract antenna height from altitude * Fix formatting & vcpkg bug * Fix ios patch * Fix ios patch v2 * Fix iOS error & constness * Fix iOS error v3 * Add ellipsoidal elevation expr variable * Change elevation calculation * Increase click area for elevation info button * Use default transform for internal providers * Use default geoid model for android fused provider * Add vertical CRS transform pass through for mock providers * Add vertical CRS transfrom pass through for bluetooth provider * Change android fused provider to default on android * Fix GPS panel geoid model name info * Change behaviour for internal provider on desktops * Use EGM96 geoid model for simulated provider * Fix iOS build * Small refactor * Set internal providers to use mixture of vertical CRS * Fix review issues * Refactor providers to use PositionTransformer * Add PositionTransform reload on project load * Add unit tests for PositionTransformer * Rename project setting name * Remove commented code, minor typo fixes, simulated provider cleanup * Fix tests & formatting * Fix tests * Add test debug logs for CI * Fix wrong test initialization for bluetoothless devices * Revert "Fix wrong test initialization for bluetoothless devices" This reverts commit 1541538. * Refactor PositionTransformer creation & clear QgsProject refs in PositionKit * Remove InputCoordinateTransformer * Fix review issues * Fix function typo --------- Co-authored-by: Tomas Mizera <tomas.mizera@lutraconsulting.co.uk> Co-authored-by: Kaustuv Pokharel <85729205+kaustuvpokharel@users.noreply.github.com> Co-authored-by: Gabriel Bolbotina <80618569+gabriel-bolbotina@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fixes #2725
This PR is a continuation from #4176 and also includes the changes introduced by #4210. In short we add the geoid separation calculation for internal, android and simulated providers.
For external providers we also recalculate orthometric elevation to use our model.