387 Commits

Author SHA1 Message Date
Alessandro Pasotti
ce4c5bd7de MSSQL: fix add/fill ring
Fix #53698

Funded by: All My Favourite Things ♬
2023-12-13 11:24:57 +01:00
Loïc Bartoletti
4a353d1a12 Marks deprecated methods in QgsGeometryUtils redundant with QgsGeometryUtilsBase 2023-12-01 11:17:11 +01:00
Loïc Bartoletti
8025f72fa7 QgsGeometryUtils_base: add this class available in Python binding 2023-12-01 11:17:11 +01:00
Loïc Bartoletti
ac3e73e25c [refacto] QgsGeometryUtils: move base methods to a dedicated class
Refactor QgsGeometryUtils to separate "basic" methods from those involving QGIS
composite types.
By "basic" methods, we refer to those that only require doubles or (qgs)vectors.
These methods are now encapsulated in their dedicated classes and can be called
from anywhere to prevent duplications in certain methods (in particular Cartesian distance calculation).

To maintain API compatibility, all methods are also accessible in QgsGeometryUtils
which acts as a pass-through to QgsGeometryUtilsBase.
2023-12-01 11:17:11 +01:00
Loïc Bartoletti
3ab676e603 QgsGeometryUtils: move 2D distance code into QgsGeometryUtils.h and uses it 2023-12-01 11:17:11 +01:00
Loïc Bartoletti
361fbded94 QgsGeometry: use NoOrientation enum and fix some possible nullptr uses 2023-11-24 09:18:02 +00:00
Loïc Bartoletti
0f27fd3b1e QgsGeometry: add methods to return orientation 2023-11-24 07:43:24 +00:00
dubravat
e1ba6f5272 Mistype in QgsGeometryUtils::segmentSide description was fixed 2023-11-23 08:28:20 +10:00
Nyall Dawson
25b75353b5 Add coverage union algorithm 2023-11-02 22:03:20 +10:00
Nyall Dawson
c8eefd0558 Expose GEOS coverage simplify as a processing algorithm 2023-11-02 22:03:20 +10:00
Sandro Santilli
f42699979c Drop the temporary QgsRectangle::createNull static, not more needed 2023-10-23 10:07:42 +10:00
Sandro Santilli
1df4c52321 Add a QgsRectangle::createNull() temporary static method 2023-10-21 16:07:32 +13:00
Sandro Santilli
94ef53286b Rename QgsBox3d::setMinimal() to setNull()
The method was introduced in this version so it should be ok to
rename with no formal deprecation notice
2023-10-20 07:03:55 +13:00
Sandro Santilli
0ec5f0debb Add QgsRectangle::setNull(), deprecating setMinimal() 2023-10-20 07:03:55 +13:00
Julien Cabieces
29f19dafc6 fix sip 2023-09-27 18:39:19 +02:00
Julien Cabieces
7ef5717c7a add deprecated instructions 2023-09-25 11:12:15 +02:00
Julien Cabieces
5315ae6cc5 make avoidIntersections return an enum 2023-09-25 08:42:03 +02:00
Jean Felder
d7bdfe000c geometry: Remove duplicated 2d boundingbox logic 2023-09-02 12:38:44 +10:00
Jean Felder
cdc2abea90 qgsgeometry: Add support for 3D boundingbox 2023-09-02 12:38:44 +10:00
bdm-oslandia
40089e6230 qgsabstractgeometry: Add support for box3d intersection 2023-09-02 12:38:44 +10:00
bdm-oslandia
5774acf8d0 qgsabstractgeometry: Add boundingBox3D logic
With this change `QgsAbstractGeometry::calculateBoundingBox()` is now
computed from `QgsAbstractGeometry::calculateBoundingBox3D()`.
2023-09-02 12:38:44 +10:00
Nyall Dawson
22fd8d9698 Add method to detect whether two QgsOrientedBox3Ds intersect 2023-08-03 22:13:03 +10:00
Nyall Dawson
5b0b7e3c2f Add repr for QgsBox3D, QgsOrientedBox3D 2023-08-03 15:27:22 +10:00
Nyall Dawson
519c32a3ff Hold GIL for more methods 2023-08-03 15:27:22 +10:00
Nyall Dawson
c3159d5a28 Add method to get corners of QgsBox3D 2023-08-03 15:27:22 +10:00
Nyall Dawson
5bdbcc4f6c Add more helpful methods for 3d objects 2023-08-03 15:27:22 +10:00
Nyall Dawson
6c24fa8571 Add some more convenience methods for QgsOrientedBox3D 2023-08-03 15:27:22 +10:00
bdm-oslandia
e0f71afeaa
qgsgeometry: Add fromBox3D constructor 2023-07-26 09:17:17 +02:00
bdm-oslandia
4c23966008
qgsgeometry: Add fromPoint constructor 2023-07-26 08:58:49 +02:00
Martin Dobias
ecc1bf2c19 sip fix 2023-07-20 14:03:55 +02:00
Martin Dobias
e8f0e1cca1 fixes after rebase 2023-07-20 14:03:55 +02:00
Martin Dobias
5e3c230262 Small additions to QgsBox3d and QgsOrientedBox3D API
- operators to move QgsBox3d by a QgsVector3D
- reproject QgsOrientedBox3D and get its axis-aligned bounding box
- get length of sides of QgsOrientedBox3D
- transform QgsOrientedBox3D with a QgsMatrix4x4
2023-07-20 14:03:55 +02:00
Nyall Dawson
5967344117 Rename QgsBox3d to QgsBox3D for consistency, monkey patch in old
name for PyQGIS compatibility
2023-07-20 15:31:00 +10:00
Nyall Dawson
aafd4f96fe Add more efficient multipoint constructor which can avoid point cloning 2023-07-19 16:52:05 +10:00
Nyall Dawson
78ecd083d3 Add a bunch of optimised/easier to use constructor variants
for creating QgsMultiPoint objects
2023-07-19 16:52:05 +10:00
Nyall Dawson
9e5015aa47 Add equality operators for QgsOrientedBox3D 2023-07-18 12:35:45 +02:00
Nyall Dawson
8beb6a08c4 Add method to get corners of oriented box 3d 2023-07-18 12:35:45 +02:00
Nyall Dawson
c4b3608462 Rename to QgsOrientedBox3d 2023-07-16 14:43:38 +10:00
Nyall Dawson
8ca716907e Move QgsOrientedBoundingBox out to own file 2023-07-16 14:43:38 +10:00
Nyall Dawson
f5b4fbd9f1 Add QgsSphere::centerVector for returning center of sphere as a
vector
2023-07-16 14:43:38 +10:00
Nyall Dawson
5ab122bc62 Add new class QgsSphere for representing 3d spheres 2023-07-16 14:43:38 +10:00
bdm-oslandia
80a9043cad
qgsbox3d: Add combineWith methods 2023-07-06 14:12:02 +02:00
bdm-oslandia
1bae6ee1f1
qgsbox3d: Add a new contains method based on x,y,z coordinates 2023-07-06 14:12:02 +02:00
bdm-oslandia
58c161f1b5
qgsbox3d: Add is3D method 2023-07-06 14:12:00 +02:00
bdm-oslandia
06a09f83f3
qgsbox3d: Add support for toString method 2023-07-05 09:12:36 +02:00
bdm-oslandia
0773042adb
qgsbox3d: Add isEmpty method
This has is the following logic:

- QgSBox3d().isEmpty() == True
- QgSBox3d().isEmpty(0, 0, 0, 0, 0, 0) == True
- QgSBox3d().isEmpty(1, 1, 1, 1, 1, 1) == True
2023-07-05 09:12:36 +02:00
bdm-oslandia
0f961e890b
qgsbox3d: Add isNull method
This has is the following logic:

- QgSBox3d().isNull() == True
- QgSBox3d().isNull(0, 0, 0, 0, 0, 0) == False
- QgSBox3d().isNull(1, 1, 1, 1, 1, 1) == False
2023-07-05 09:12:36 +02:00
bdm-oslandia
6d1a08a5c3
qgsbox3d: Use nan for default values
This will be necessary to properly define `isNull` method in the next
commit.
This way, it behaves the same as `QgsPoint`.

Co-Authored by Jean Felder
2023-07-05 09:12:35 +02:00
bdm-oslandia
5293002ad3
qgsbox3d: Add a setMinimal method 2023-07-05 00:39:11 +02:00
bdm-oslandia
34e123e846
qgsbox3d: Add a normalize step parameter to the constructors
This allows to choose if a normalization step needs to be applied. It
is set to True by default to allow backward compatibility with the
api.
2023-07-04 17:32:10 +02:00