35 Commits

Author SHA1 Message Date
Nyall Dawson
3f6b490218 Sipify 2025-04-02 11:11:10 +10:00
Nyall Dawson
cde770edc6 QgsDistanceArea methods should raise QgsCsException when errors occur
Instead of just silently return "0", which is misleading and
can result in data corruption/incorrect analysis results. Better
to be safe and force callers to handle transformation errors
appropriately.

In this case we:

- raise QgsProcessingExceptions when the failed measurement is coming
from a processing tool, so that the user is forced to deal with the
issue and we aren't providing meaningless/misleading measurements
- report evaluation errors if the measurement is coming from a
QGIS expression, so the user must appropriately handle the situation
- for all other cases we currently just write a console error and
maintain the current behavior of treating the measurement length
as 0. TODO notes have been added to handle this cases better.
2024-09-22 08:23:05 +10:00
Nyall Dawson
b39f760cbc
Correctly handle multiline SIP_OUT param documentation 2024-09-10 11:11:25 +10:00
Nyall Dawson
1a8a072aac Fix up \param formatting 2024-09-04 13:54:39 +10:00
Nyall Dawson
3a578d6712 Header update 2024-08-13 20:28:55 +10:00
Nyall Dawson
be8dce7d0d Valid improvements from new sipify 2024-08-13 20:28:55 +10:00
Nyall Dawson
6f652d251b Drop no-value copy constructor dox 2024-07-25 04:02:55 +10:00
Even Rouault
15ea5c46bc
Header files: remove all mentions of '\since QGIS 3.0' 2024-02-18 20:57:23 +01:00
Even Rouault
02caeb9db7
Header files: remove all mentions of '\since QGIS 2.' 2024-02-18 20:46:01 +01:00
Nyall Dawson
f9c3da1e06 Move unit enums to Qgis, promote to enum class 2023-02-19 13:29:06 +10:00
Nyall Dawson
e46875b9b6 QgsDistanceArea::bearing can raise QgsCsExceptions, so ensure that
these are always gracefully caught

Avoids some unwanted "unhandled exception" message boxes which
can pop up while moving the mouse around outside of the valid bounds
of the current map projection
2022-02-03 06:19:50 +10:00
Denis Rouzaud
ba8a445850 run sipify 2021-03-22 21:13:52 +01:00
Nyall Dawson
cc9cbeca54 Use the GeographicLib routines exposed through PROJ for all ellipsoidal
calculations

Since GRASS upstream is moving away from the previous calculations which
all of QGIS' ellipsoidal distance/areas formulas are based on, let's
follow suit and delegate all these calculations to the GeographicLib
routines exposed through the PROJ api.

Refs https://github.com/OSGeo/grass/pull/1283
2021-02-25 16:35:37 +10:00
Nyall Dawson
50b9beaad6 [sipify] Catch more class references and insert :py:class: annotations 2021-01-31 05:41:22 +10:00
Nyall Dawson
81a9db9f57 [sipify] Fix creation of cross references 2020-06-15 13:43:58 +10:00
Nyall Dawson
c795ddb1e9 Updates 2020-06-11 13:29:59 +10:00
Nyall Dawson
b6d66becab Sipify 2019-02-27 09:41:11 +10:00
Nyall Dawson
384d310233 Minor improvements to PyQGIS returns for SIP_OUT params 2019-02-05 04:55:34 +11:00
Nyall Dawson
7b664ea9a8 Fix see also link 2019-01-12 05:31:00 +10:00
Nyall Dawson
021f5ea366 [needs-docs][api] Rename QgsDistanceArea methods to change "date line"
to "antimeridian"

Because the date line =/= +/-180 degree longitude, which is what
we were incorrectly using it to mean.
2019-01-12 05:31:00 +10:00
Nyall Dawson
a8bd12c4e3 [FEATURE][API] Add method to QgsDistanceArea to split a (multi)line geometry
at the antimeridian

Whenever line segments in the input geometry cross the antimeridian, they
will be split into two segments, with the latitude of the breakpoint being
determined using a geodesic line connecting the points either side of this
segment.

If the geometry contains M or Z values, these will be linearly interpolated
for the new vertices created at the antimeridian.
2019-01-12 05:31:00 +10:00
Nyall Dawson
eaad71e0c9 Tweak API
Better to use QVector here, because the QgsLineString/QgsGeometry
methods all use QVector too, and we want to avoid unnecessary
list->vector conversions.
2019-01-08 19:48:15 +10:00
Nyall Dawson
13ac907198 latitudeGeodesicCrossesDateLine also returns fraction of segment
along which the crossing occurs
2019-01-08 12:32:50 +10:00
Nyall Dawson
adc5c17456 Expose method for calculating latitude geodesic crosses date line to public QgsDistanceArea API 2019-01-08 12:32:50 +10:00
Nyall Dawson
ebd104466e Add method to retrieve destination CRS from QgsDistanceArea 2019-01-08 12:32:50 +10:00
Nyall Dawson
fdea61a97c Add method to calculate the geodesic line joining two points to QgsDistanceArea
Using geographiclib to calculate the line
2019-01-08 12:32:50 +10:00
Juernjakob Dugge
c09b379fc7 Rename member variables, remove "forceCartesian" arguments 2019-01-08 09:36:33 +10:00
Juernjakob Dugge
bf5a077e33 Fix typos 2019-01-08 09:36:33 +10:00
Juernjakob Dugge
3e05c99c11 Add centimeter and millimeter based units to Project Properties and Map Tools Options
Fix the "map units" option in distance measurements when using geographic coordinate systems
2019-01-08 09:36:33 +10:00
Denis Rouzaud
166e952c33 run sipify 2018-12-19 08:04:27 -04:00
Denis Rouzaud
edfb7e1465 run sipify 2018-12-18 17:17:25 -04:00
Denis Rouzaud
65bb60e96c run sipify 2018-05-28 10:39:34 -08:00
Nyall Dawson
4b1b752633 Fix bad regex 2018-05-27 18:54:09 +10:00
Nyall Dawson
38850bdb94 [pyqgis] Ensure that multiline param tags are indented for additional lines 2018-05-27 18:54:09 +10:00
Denis Rouzaud
7df2593caf move auto generated sip file in dedicated folder 2018-05-14 10:23:37 -04:00