mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
This reworks (on proj 6 builds only!) QgsCoordinateTransformContext to use proj strings of proj coordinate operations to handle the users' preferred list of operations when transforming coordinates between two CRSes. Previously, the context heavily utilised internal transform ID numbers, which were QGIS specific and relied on matching entries from the QGIS srs.db file. This approach was undesirable because it meant QGIS had to maintain and carry it's own table of possible transform pathways between CRS pairs (which was difficult to update, impossible to track, and most likely severely out of date). Now we can utilse Proj 6's (wonderful!) logic for determining the best coordinate operation to utilise between two CRSes. All the old API has been deprecated and no longer works under proj 6, but that's unavoidable (and unlikely to be in use by plugins anyway, it's VERY low level stuff). A further bonus of this work is that QgsCoordinateTransform no longer relies on proj strings of the source/dest CRS to build the transform -- the issue with that approach was that proj strings are lossy (and not always possible to generate), so now by default we are generating better pathways between CRS pairs. This resolves issues with transforms which rely on pivot datums, such as GDA94 - GDA2020 conversions. Sponsored by ICSM