34 Commits

Author SHA1 Message Date
Nyall Dawson
31138aa970 Add method to retrieve list of known crs authorities 2023-07-09 18:14:10 +10:00
Nyall Dawson
3b1b6d56ec Correctly use horizontal vs single crs extraction methods in different
functions
2023-07-09 18:14:10 +10:00
Hannes
6a14504c10 Further clarify CRS' hasAxisInverted
Thanks to @pathmapper & @nyalldawson
2023-06-09 07:06:58 +10:00
Yoann Quenach de Quivillic
08bf81dbeb Add methods to clear recent crs or remove one crs 2023-04-24 09:22:32 +02:00
Nyall Dawson
50c76929e1
Followup 30700f1, ensure links to Qgis members are set in docstrings 2023-03-31 10:46:24 +10:00
Nyall Dawson
f9c3da1e06 Move unit enums to Qgis, promote to enum class 2023-02-19 13:29:06 +10:00
Damiano Lombardi
37c0535079 Invert bbox rect if crs has inverted axis 2022-10-25 16:03:49 +02:00
Damiano Lombardi
a4ae707ff6 Add bbox-crs parameter to the request (if not default CRS84) 2022-10-25 16:03:49 +02:00
Nyall Dawson
c97f3ec8d6 Rename to isTransformationPossible 2022-06-03 12:02:13 +10:00
Nyall Dawson
7edcb9899e Add a constructor flag to QgsCoordinateTransform to ignore impossible
transformations, such as those which happen across different
celestial bodies

If set, the flag indicates that no user-facing warnings should be
shown and instead the transform should be short circuited
2022-06-03 12:02:13 +10:00
Julien Cabieces
012b6a46db constify methods 2022-04-29 08:21:47 +10:00
Mathieu Pellerin
5d5b1492fb [map canvas] Right-click copy coordinates should respect CRS axis ordering 2022-04-06 13:25:41 +07:00
Nyall Dawson
0b8e6abb22 Add QgsCoordinateReferenceSystemUtils class, with function to determine
most appropriate x/y or y/x coordinate order for a crs
2022-04-06 16:05:08 +10:00
Nyall Dawson
28bb05b0d5 Add method to retrieve axis order for a QgsCoordinateReferenceSystem 2022-04-06 11:45:32 +10:00
Nyall Dawson
370bdfd84d Add api to allow the native format for a crs definition (i.e. wkt
or proj) to be saved when the crs is saved to xml

Allows us a way to present a custom crs in the same format as it was
originally defined using
2022-01-13 13:58:00 +10:00
Nyall Dawson
24a498b57c Rename to 'toGeographicCrs' 2022-01-11 19:50:46 +10:00
Nyall Dawson
1f240c0196 Add method to convert QgsCoordinateReferenceSystem to geodetic crs 2022-01-11 19:50:46 +10:00
Nyall Dawson
6e7e8d3d7d Promote CRS format enum to enum class, move to Qgis 2022-01-11 19:50:46 +10:00
Nyall Dawson
e6b39077a2
Promote QgsCoordinateTransform::TransformDirection to enum class, move to Qgis
This enum was forcing an include of qgscoordinatetransform.h within the
widely used qgsabstractgeometry.h header, causing an absolute explosion
of includes of a bunch of very heavy header classes all across QGIS. By
removing the forced include we can avoid a ton of unwanted includes
and make wider use of forward declarations...
2021-09-22 16:40:49 +10:00
Nyall Dawson
711a615be3 Fix raises sphinx format 2021-06-25 10:50:04 +10:00
Nyall Dawson
4ff3f447dc Don't try to insert links in raises blocks in PyQGIS docs
These aren't formatted correctly if we do
2021-06-10 11:03:43 +10:00
Denis Rouzaud
35c557a234 run sipify 2021-05-26 14:30:54 +02:00
Nyall Dawson
bd26ae1d29 Add basic support for coordinate epoch of dynamic (not plate fixed) crs
to QgsCoordinateTransform

QgsCoordinateTransform class can perform time-dependent transformations
between a static and dynamic CRS based on either the source OR destination CRS coordinate epoch,
however dynamic CRS to dynamic CRS transformations are not currently supported.

Using the same approach as the GDAL changeset in https://github.com/OSGeo/gdal/pull/3810
2021-05-13 19:33:15 +10:00
Nyall Dawson
0b5a95ce44 Deprecate constructor which should have been deprecated a long time ago 2021-05-13 19:33:15 +10:00
Nyall Dawson
b6f60f6120 Add QgsCoordinateReferenceSystem::operation() for retrieving details
of the associated proj operation for a CRS

Allows callers to determine the projection used for CRS objects and
their details.

Also add QgsCoordinateReferenceSystemRegistry::projOperations() for
retrieving a complete list of all available PROJ operations
2021-05-11 14:25:53 +10:00
Nyall Dawson
7604b6e47e Add QgsCoordinateReferenceSystemRegistry::celestialBodies() for
retrieving a list of all known celestial bodies from PROJ

Requires PROJ 8.1+
2021-05-10 21:58:03 +10:00
Nyall Dawson
7e1f9d771d Add celestial body name to EllipsoidDefinition
Requires proj 8.1+
2021-05-10 21:58:03 +10:00
Nyall Dawson
95ed5ecc9c Add QgsCoordinateReferenceSystem::celestialBodyName
Returns the associated celestial body name (proj 8.1+ only)
2021-05-10 21:58:03 +10:00
Nyall Dawson
27085cf5f4 Use @ instead of () for epoch strings 2021-05-10 20:23:07 +10:00
Nyall Dawson
299c81db5f Show coordinate epoch in QgsCoordinateReferenceSystem __repr__ 2021-05-10 20:23:07 +10:00
Nyall Dawson
2aab133c0c Add QgsCoordinateReferenceSystem::setCoordinateEpoch()/coordinateEpoch() 2021-05-10 20:23:07 +10:00
Nyall Dawson
9e7e0d4bf6 Add QgsCoordinateReferenceSystem::isDynamic()
Returns TRUE if the given proj coordinate system is a dynamic CRS.

A dynamic CRS relies on a dynamic datum, that is a datum that is no
plate-fixed.
2021-05-10 20:23:07 +10:00
Nyall Dawson
bfb1dd7672 [api] Add QgsCoordinateReferenceSystem::factor()
Calculate various cartographic properties, such as scale factors,
angular distortion and meridian convergence for the CRS at a
given geodetic point (in geographic coordinates).

Depending on the underlying projection values will be calculated
either numerically (default) or analytically. The function also
calculates the partial derivatives of the given coordinate.

Internally uses the proj library proj_factors API to calculate the factors.

Fixes #41952
2021-05-08 07:49:27 +10:00
Nyall Dawson
31d1df320a Move projection/transformation related files to core/proj
Minor cleanup
2021-05-08 07:49:27 +10:00