Skip to content

Commit

Permalink
[feature] Add "Linear Referencing" symbol layer type
Browse files Browse the repository at this point in the history
This new symbol layer type allows placing text labels at regular
intervals along a line (or at positions corresponding to
existing vertices). Positions can be calculated using
Cartesian distances, or interpolated from z/m values.

Functionality includes:

- Labels can be placed using fixed cartesian 2d distances,
at regular linearly interpolated spacing calculated using
the Z or M values in geometries, or at existing vertices
- Labels can show either the running total distance, or
the linearly interpolated Z/M value
- Uses text rendered to draw labels, so the full range
of functionality is available for the labels (including
buffers, shadows, etc)
- Uses the QGIS numeric format classes to format numbers
as strings, so users have full range of customisation
options for eg decimal places
- An optional "skip multiples of" setting. If set, then
labels which are a multiple of this value will be skipped
over. This allows construction of complex referencing labels,
eg where a symbol has two linear referencing symbol layers,
one set to label every 100m in a small font, skipping multiples
of 1000, and a second set to label every 1000m in a big
bold font
- Labels are rendered using an angle calculated by averaging
the linestring, so sharp tiny jaggies don't result in
unslightly label rotation
- Optionally, markers can be placed at referenced points
in the line string, using a full QGIS marker symbol (this allows
eg showing a cross-hatch at the labeled point, for a "ruler"
style line)
- Data defined control over the placement intervals, skip
multiples setting, marker visibility and average angle
calculation length

Notes:

- When using the distance-based placement or labels, the
distances are calculated using 2D only, Cartesian calculations
based on the original layer CRS. This could potentially be
extended in future to expose options for 3D Cartesian distances,
or ellipsoidal distance calculations.

Sponsored by the Swiss QGIS User Group
  • Loading branch information
nyalldawson committed Aug 26, 2024
1 parent 8ab7175 commit 26ab9b9
Show file tree
Hide file tree
Showing 31 changed files with 2,999 additions and 6 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1103,7 +1103,7 @@ if (WITH_CORE AND WITH_BINDINGS)
include(SIPMacros)

set(SIP_INCLUDES ${PYQT_SIP_DIR} ${CMAKE_SOURCE_DIR}/python)
set(SIP_CONCAT_PARTS 25)
set(SIP_CONCAT_PARTS 20)

if (NOT BINDINGS_GLOBAL_INSTALL)
set(Python_SITEARCH ${QGIS_DATA_DIR}/python)
Expand Down
15 changes: 15 additions & 0 deletions python/PyQt6/core/auto_additions/qgis.py
Original file line number Diff line number Diff line change
Expand Up @@ -2911,6 +2911,21 @@
Qgis.MarkerLinePlacements = lambda flags=0: Qgis.MarkerLinePlacement(flags)
Qgis.MarkerLinePlacements.baseClass = Qgis
MarkerLinePlacements = Qgis # dirty hack since SIP seems to introduce the flags in module
# monkey patching scoped based enum
Qgis.LinearReferencingPlacement.IntervalCartesian2D.__doc__ = "Place labels at regular intervals, using Cartesian distance calculations on a 2D plane"
Qgis.LinearReferencingPlacement.IntervalZ.__doc__ = "Place labels at regular intervals, linearly interpolated using Z values"
Qgis.LinearReferencingPlacement.IntervalM.__doc__ = "Place labels at regular intervals, linearly interpolated using M values"
Qgis.LinearReferencingPlacement.Vertex.__doc__ = "Place labels on every vertex in the line"
Qgis.LinearReferencingPlacement.__doc__ = "Defines how/where the labels should be placed in a linear referencing symbol layer.\n\n.. versionadded:: 3.40\n\n" + '* ``IntervalCartesian2D``: ' + Qgis.LinearReferencingPlacement.IntervalCartesian2D.__doc__ + '\n' + '* ``IntervalZ``: ' + Qgis.LinearReferencingPlacement.IntervalZ.__doc__ + '\n' + '* ``IntervalM``: ' + Qgis.LinearReferencingPlacement.IntervalM.__doc__ + '\n' + '* ``Vertex``: ' + Qgis.LinearReferencingPlacement.Vertex.__doc__
# --
Qgis.LinearReferencingPlacement.baseClass = Qgis
# monkey patching scoped based enum
Qgis.LinearReferencingLabelSource.CartesianDistance2D.__doc__ = "Distance along line, calculated using Cartesian calculations on a 2D plane."
Qgis.LinearReferencingLabelSource.Z.__doc__ = "Z values"
Qgis.LinearReferencingLabelSource.M.__doc__ = "M values"
Qgis.LinearReferencingLabelSource.__doc__ = "Defines what quantity to use for the labels shown in a linear referencing symbol layer.\n\n.. versionadded:: 3.40\n\n" + '* ``CartesianDistance2D``: ' + Qgis.LinearReferencingLabelSource.CartesianDistance2D.__doc__ + '\n' + '* ``Z``: ' + Qgis.LinearReferencingLabelSource.Z.__doc__ + '\n' + '* ``M``: ' + Qgis.LinearReferencingLabelSource.M.__doc__
# --
Qgis.LinearReferencingLabelSource.baseClass = Qgis
QgsGradientFillSymbolLayer.GradientColorType = Qgis.GradientColorSource
# monkey patching scoped based enum
QgsGradientFillSymbolLayer.SimpleTwoColor = Qgis.GradientColorSource.SimpleTwoColor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# The following has been generated automatically from src/core/symbology/qgslinearreferencingsymbollayer.h
QgsLinearReferencingSymbolLayer.create = staticmethod(QgsLinearReferencingSymbolLayer.create)
try:
QgsLinearReferencingSymbolLayer.__group__ = ['symbology']
except NameError:
pass
8 changes: 7 additions & 1 deletion python/PyQt6/core/auto_additions/qgssymbollayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,13 @@
QgsSymbolLayer.Property.PropertyLineClipping = QgsSymbolLayer.Property.LineClipping
QgsSymbolLayer.PropertyLineClipping.is_monkey_patched = True
QgsSymbolLayer.PropertyLineClipping.__doc__ = "Line clipping mode (since QGIS 3.24)"
QgsSymbolLayer.Property.__doc__ = "Data definable properties.\n\n" + '* ``PropertySize``: ' + QgsSymbolLayer.Property.Size.__doc__ + '\n' + '* ``PropertyAngle``: ' + QgsSymbolLayer.Property.Angle.__doc__ + '\n' + '* ``PropertyName``: ' + QgsSymbolLayer.Property.Name.__doc__ + '\n' + '* ``PropertyFillColor``: ' + QgsSymbolLayer.Property.FillColor.__doc__ + '\n' + '* ``PropertyStrokeColor``: ' + QgsSymbolLayer.Property.StrokeColor.__doc__ + '\n' + '* ``PropertyStrokeWidth``: ' + QgsSymbolLayer.Property.StrokeWidth.__doc__ + '\n' + '* ``PropertyStrokeStyle``: ' + QgsSymbolLayer.Property.StrokeStyle.__doc__ + '\n' + '* ``PropertyOffset``: ' + QgsSymbolLayer.Property.Offset.__doc__ + '\n' + '* ``PropertyCharacter``: ' + QgsSymbolLayer.Property.Character.__doc__ + '\n' + '* ``PropertyWidth``: ' + QgsSymbolLayer.Property.Width.__doc__ + '\n' + '* ``PropertyHeight``: ' + QgsSymbolLayer.Property.Height.__doc__ + '\n' + '* ``PropertyPreserveAspectRatio``: ' + QgsSymbolLayer.Property.PreserveAspectRatio.__doc__ + '\n' + '* ``PropertyFillStyle``: ' + QgsSymbolLayer.Property.FillStyle.__doc__ + '\n' + '* ``PropertyJoinStyle``: ' + QgsSymbolLayer.Property.JoinStyle.__doc__ + '\n' + '* ``PropertySecondaryColor``: ' + QgsSymbolLayer.Property.SecondaryColor.__doc__ + '\n' + '* ``PropertyLineAngle``: ' + QgsSymbolLayer.Property.LineAngle.__doc__ + '\n' + '* ``PropertyLineDistance``: ' + QgsSymbolLayer.Property.LineDistance.__doc__ + '\n' + '* ``PropertyGradientType``: ' + QgsSymbolLayer.Property.GradientType.__doc__ + '\n' + '* ``PropertyCoordinateMode``: ' + QgsSymbolLayer.Property.CoordinateMode.__doc__ + '\n' + '* ``PropertyGradientSpread``: ' + QgsSymbolLayer.Property.GradientSpread.__doc__ + '\n' + '* ``PropertyGradientReference1X``: ' + QgsSymbolLayer.Property.GradientReference1X.__doc__ + '\n' + '* ``PropertyGradientReference1Y``: ' + QgsSymbolLayer.Property.GradientReference1Y.__doc__ + '\n' + '* ``PropertyGradientReference2X``: ' + QgsSymbolLayer.Property.GradientReference2X.__doc__ + '\n' + '* ``PropertyGradientReference2Y``: ' + QgsSymbolLayer.Property.GradientReference2Y.__doc__ + '\n' + '* ``PropertyGradientReference1IsCentroid``: ' + QgsSymbolLayer.Property.GradientReference1IsCentroid.__doc__ + '\n' + '* ``PropertyGradientReference2IsCentroid``: ' + QgsSymbolLayer.Property.GradientReference2IsCentroid.__doc__ + '\n' + '* ``PropertyBlurRadius``: ' + QgsSymbolLayer.Property.BlurRadius.__doc__ + '\n' + '* ``PropertyShapeburstUseWholeShape``: ' + QgsSymbolLayer.Property.ShapeburstUseWholeShape.__doc__ + '\n' + '* ``PropertyShapeburstMaxDistance``: ' + QgsSymbolLayer.Property.ShapeburstMaxDistance.__doc__ + '\n' + '* ``PropertyShapeburstIgnoreRings``: ' + QgsSymbolLayer.Property.ShapeburstIgnoreRings.__doc__ + '\n' + '* ``PropertyFile``: ' + QgsSymbolLayer.Property.File.__doc__ + '\n' + '* ``PropertyDistanceX``: ' + QgsSymbolLayer.Property.DistanceX.__doc__ + '\n' + '* ``PropertyDistanceY``: ' + QgsSymbolLayer.Property.DistanceY.__doc__ + '\n' + '* ``PropertyDisplacementX``: ' + QgsSymbolLayer.Property.DisplacementX.__doc__ + '\n' + '* ``PropertyDisplacementY``: ' + QgsSymbolLayer.Property.DisplacementY.__doc__ + '\n' + '* ``PropertyOpacity``: ' + QgsSymbolLayer.Property.Opacity.__doc__ + '\n' + '* ``PropertyCustomDash``: ' + QgsSymbolLayer.Property.CustomDash.__doc__ + '\n' + '* ``PropertyCapStyle``: ' + QgsSymbolLayer.Property.CapStyle.__doc__ + '\n' + '* ``PropertyPlacement``: ' + QgsSymbolLayer.Property.Placement.__doc__ + '\n' + '* ``PropertyInterval``: ' + QgsSymbolLayer.Property.Interval.__doc__ + '\n' + '* ``PropertyOffsetAlongLine``: ' + QgsSymbolLayer.Property.OffsetAlongLine.__doc__ + '\n' + '* ``PropertyAverageAngleLength``: ' + QgsSymbolLayer.Property.AverageAngleLength.__doc__ + '\n' + '* ``PropertyHorizontalAnchor``: ' + QgsSymbolLayer.Property.HorizontalAnchor.__doc__ + '\n' + '* ``PropertyVerticalAnchor``: ' + QgsSymbolLayer.Property.VerticalAnchor.__doc__ + '\n' + '* ``PropertyLayerEnabled``: ' + QgsSymbolLayer.Property.LayerEnabled.__doc__ + '\n' + '* ``PropertyArrowWidth``: ' + QgsSymbolLayer.Property.ArrowWidth.__doc__ + '\n' + '* ``PropertyArrowStartWidth``: ' + QgsSymbolLayer.Property.ArrowStartWidth.__doc__ + '\n' + '* ``PropertyArrowHeadLength``: ' + QgsSymbolLayer.Property.ArrowHeadLength.__doc__ + '\n' + '* ``PropertyArrowHeadThickness``: ' + QgsSymbolLayer.Property.ArrowHeadThickness.__doc__ + '\n' + '* ``PropertyArrowHeadType``: ' + QgsSymbolLayer.Property.ArrowHeadType.__doc__ + '\n' + '* ``PropertyArrowType``: ' + QgsSymbolLayer.Property.ArrowType.__doc__ + '\n' + '* ``PropertyOffsetX``: ' + QgsSymbolLayer.Property.OffsetX.__doc__ + '\n' + '* ``PropertyOffsetY``: ' + QgsSymbolLayer.Property.OffsetY.__doc__ + '\n' + '* ``PropertyPointCount``: ' + QgsSymbolLayer.Property.PointCount.__doc__ + '\n' + '* ``PropertyRandomSeed``: ' + QgsSymbolLayer.Property.RandomSeed.__doc__ + '\n' + '* ``PropertyClipPoints``: ' + QgsSymbolLayer.Property.ClipPoints.__doc__ + '\n' + '* ``PropertyDensityArea``: ' + QgsSymbolLayer.Property.DensityArea.__doc__ + '\n' + '* ``PropertyFontFamily``: ' + QgsSymbolLayer.Property.FontFamily.__doc__ + '\n' + '* ``PropertyFontStyle``: ' + QgsSymbolLayer.Property.FontStyle.__doc__ + '\n' + '* ``PropertyDashPatternOffset``: ' + QgsSymbolLayer.Property.DashPatternOffset.__doc__ + '\n' + '* ``PropertyTrimStart``: ' + QgsSymbolLayer.Property.TrimStart.__doc__ + '\n' + '* ``PropertyTrimEnd``: ' + QgsSymbolLayer.Property.TrimEnd.__doc__ + '\n' + '* ``PropertyLineStartWidthValue``: ' + QgsSymbolLayer.Property.LineStartWidthValue.__doc__ + '\n' + '* ``PropertyLineEndWidthValue``: ' + QgsSymbolLayer.Property.LineEndWidthValue.__doc__ + '\n' + '* ``PropertyLineStartColorValue``: ' + QgsSymbolLayer.Property.LineStartColorValue.__doc__ + '\n' + '* ``PropertyLineEndColorValue``: ' + QgsSymbolLayer.Property.LineEndColorValue.__doc__ + '\n' + '* ``PropertyMarkerClipping``: ' + QgsSymbolLayer.Property.MarkerClipping.__doc__ + '\n' + '* ``PropertyRandomOffsetX``: ' + QgsSymbolLayer.Property.RandomOffsetX.__doc__ + '\n' + '* ``PropertyRandomOffsetY``: ' + QgsSymbolLayer.Property.RandomOffsetY.__doc__ + '\n' + '* ``PropertyLineClipping``: ' + QgsSymbolLayer.Property.LineClipping.__doc__
QgsSymbolLayer.SkipMultiples = QgsSymbolLayer.Property.SkipMultiples
QgsSymbolLayer.SkipMultiples.is_monkey_patched = True
QgsSymbolLayer.SkipMultiples.__doc__ = "Skip multiples of (since QGIS 3.40)"
QgsSymbolLayer.ShowMarker = QgsSymbolLayer.Property.ShowMarker
QgsSymbolLayer.ShowMarker.is_monkey_patched = True
QgsSymbolLayer.ShowMarker.__doc__ = "Show markers (since QGIS 3.40)"
QgsSymbolLayer.Property.__doc__ = "Data definable properties.\n\n" + '* ``PropertySize``: ' + QgsSymbolLayer.Property.Size.__doc__ + '\n' + '* ``PropertyAngle``: ' + QgsSymbolLayer.Property.Angle.__doc__ + '\n' + '* ``PropertyName``: ' + QgsSymbolLayer.Property.Name.__doc__ + '\n' + '* ``PropertyFillColor``: ' + QgsSymbolLayer.Property.FillColor.__doc__ + '\n' + '* ``PropertyStrokeColor``: ' + QgsSymbolLayer.Property.StrokeColor.__doc__ + '\n' + '* ``PropertyStrokeWidth``: ' + QgsSymbolLayer.Property.StrokeWidth.__doc__ + '\n' + '* ``PropertyStrokeStyle``: ' + QgsSymbolLayer.Property.StrokeStyle.__doc__ + '\n' + '* ``PropertyOffset``: ' + QgsSymbolLayer.Property.Offset.__doc__ + '\n' + '* ``PropertyCharacter``: ' + QgsSymbolLayer.Property.Character.__doc__ + '\n' + '* ``PropertyWidth``: ' + QgsSymbolLayer.Property.Width.__doc__ + '\n' + '* ``PropertyHeight``: ' + QgsSymbolLayer.Property.Height.__doc__ + '\n' + '* ``PropertyPreserveAspectRatio``: ' + QgsSymbolLayer.Property.PreserveAspectRatio.__doc__ + '\n' + '* ``PropertyFillStyle``: ' + QgsSymbolLayer.Property.FillStyle.__doc__ + '\n' + '* ``PropertyJoinStyle``: ' + QgsSymbolLayer.Property.JoinStyle.__doc__ + '\n' + '* ``PropertySecondaryColor``: ' + QgsSymbolLayer.Property.SecondaryColor.__doc__ + '\n' + '* ``PropertyLineAngle``: ' + QgsSymbolLayer.Property.LineAngle.__doc__ + '\n' + '* ``PropertyLineDistance``: ' + QgsSymbolLayer.Property.LineDistance.__doc__ + '\n' + '* ``PropertyGradientType``: ' + QgsSymbolLayer.Property.GradientType.__doc__ + '\n' + '* ``PropertyCoordinateMode``: ' + QgsSymbolLayer.Property.CoordinateMode.__doc__ + '\n' + '* ``PropertyGradientSpread``: ' + QgsSymbolLayer.Property.GradientSpread.__doc__ + '\n' + '* ``PropertyGradientReference1X``: ' + QgsSymbolLayer.Property.GradientReference1X.__doc__ + '\n' + '* ``PropertyGradientReference1Y``: ' + QgsSymbolLayer.Property.GradientReference1Y.__doc__ + '\n' + '* ``PropertyGradientReference2X``: ' + QgsSymbolLayer.Property.GradientReference2X.__doc__ + '\n' + '* ``PropertyGradientReference2Y``: ' + QgsSymbolLayer.Property.GradientReference2Y.__doc__ + '\n' + '* ``PropertyGradientReference1IsCentroid``: ' + QgsSymbolLayer.Property.GradientReference1IsCentroid.__doc__ + '\n' + '* ``PropertyGradientReference2IsCentroid``: ' + QgsSymbolLayer.Property.GradientReference2IsCentroid.__doc__ + '\n' + '* ``PropertyBlurRadius``: ' + QgsSymbolLayer.Property.BlurRadius.__doc__ + '\n' + '* ``PropertyShapeburstUseWholeShape``: ' + QgsSymbolLayer.Property.ShapeburstUseWholeShape.__doc__ + '\n' + '* ``PropertyShapeburstMaxDistance``: ' + QgsSymbolLayer.Property.ShapeburstMaxDistance.__doc__ + '\n' + '* ``PropertyShapeburstIgnoreRings``: ' + QgsSymbolLayer.Property.ShapeburstIgnoreRings.__doc__ + '\n' + '* ``PropertyFile``: ' + QgsSymbolLayer.Property.File.__doc__ + '\n' + '* ``PropertyDistanceX``: ' + QgsSymbolLayer.Property.DistanceX.__doc__ + '\n' + '* ``PropertyDistanceY``: ' + QgsSymbolLayer.Property.DistanceY.__doc__ + '\n' + '* ``PropertyDisplacementX``: ' + QgsSymbolLayer.Property.DisplacementX.__doc__ + '\n' + '* ``PropertyDisplacementY``: ' + QgsSymbolLayer.Property.DisplacementY.__doc__ + '\n' + '* ``PropertyOpacity``: ' + QgsSymbolLayer.Property.Opacity.__doc__ + '\n' + '* ``PropertyCustomDash``: ' + QgsSymbolLayer.Property.CustomDash.__doc__ + '\n' + '* ``PropertyCapStyle``: ' + QgsSymbolLayer.Property.CapStyle.__doc__ + '\n' + '* ``PropertyPlacement``: ' + QgsSymbolLayer.Property.Placement.__doc__ + '\n' + '* ``PropertyInterval``: ' + QgsSymbolLayer.Property.Interval.__doc__ + '\n' + '* ``PropertyOffsetAlongLine``: ' + QgsSymbolLayer.Property.OffsetAlongLine.__doc__ + '\n' + '* ``PropertyAverageAngleLength``: ' + QgsSymbolLayer.Property.AverageAngleLength.__doc__ + '\n' + '* ``PropertyHorizontalAnchor``: ' + QgsSymbolLayer.Property.HorizontalAnchor.__doc__ + '\n' + '* ``PropertyVerticalAnchor``: ' + QgsSymbolLayer.Property.VerticalAnchor.__doc__ + '\n' + '* ``PropertyLayerEnabled``: ' + QgsSymbolLayer.Property.LayerEnabled.__doc__ + '\n' + '* ``PropertyArrowWidth``: ' + QgsSymbolLayer.Property.ArrowWidth.__doc__ + '\n' + '* ``PropertyArrowStartWidth``: ' + QgsSymbolLayer.Property.ArrowStartWidth.__doc__ + '\n' + '* ``PropertyArrowHeadLength``: ' + QgsSymbolLayer.Property.ArrowHeadLength.__doc__ + '\n' + '* ``PropertyArrowHeadThickness``: ' + QgsSymbolLayer.Property.ArrowHeadThickness.__doc__ + '\n' + '* ``PropertyArrowHeadType``: ' + QgsSymbolLayer.Property.ArrowHeadType.__doc__ + '\n' + '* ``PropertyArrowType``: ' + QgsSymbolLayer.Property.ArrowType.__doc__ + '\n' + '* ``PropertyOffsetX``: ' + QgsSymbolLayer.Property.OffsetX.__doc__ + '\n' + '* ``PropertyOffsetY``: ' + QgsSymbolLayer.Property.OffsetY.__doc__ + '\n' + '* ``PropertyPointCount``: ' + QgsSymbolLayer.Property.PointCount.__doc__ + '\n' + '* ``PropertyRandomSeed``: ' + QgsSymbolLayer.Property.RandomSeed.__doc__ + '\n' + '* ``PropertyClipPoints``: ' + QgsSymbolLayer.Property.ClipPoints.__doc__ + '\n' + '* ``PropertyDensityArea``: ' + QgsSymbolLayer.Property.DensityArea.__doc__ + '\n' + '* ``PropertyFontFamily``: ' + QgsSymbolLayer.Property.FontFamily.__doc__ + '\n' + '* ``PropertyFontStyle``: ' + QgsSymbolLayer.Property.FontStyle.__doc__ + '\n' + '* ``PropertyDashPatternOffset``: ' + QgsSymbolLayer.Property.DashPatternOffset.__doc__ + '\n' + '* ``PropertyTrimStart``: ' + QgsSymbolLayer.Property.TrimStart.__doc__ + '\n' + '* ``PropertyTrimEnd``: ' + QgsSymbolLayer.Property.TrimEnd.__doc__ + '\n' + '* ``PropertyLineStartWidthValue``: ' + QgsSymbolLayer.Property.LineStartWidthValue.__doc__ + '\n' + '* ``PropertyLineEndWidthValue``: ' + QgsSymbolLayer.Property.LineEndWidthValue.__doc__ + '\n' + '* ``PropertyLineStartColorValue``: ' + QgsSymbolLayer.Property.LineStartColorValue.__doc__ + '\n' + '* ``PropertyLineEndColorValue``: ' + QgsSymbolLayer.Property.LineEndColorValue.__doc__ + '\n' + '* ``PropertyMarkerClipping``: ' + QgsSymbolLayer.Property.MarkerClipping.__doc__ + '\n' + '* ``PropertyRandomOffsetX``: ' + QgsSymbolLayer.Property.RandomOffsetX.__doc__ + '\n' + '* ``PropertyRandomOffsetY``: ' + QgsSymbolLayer.Property.RandomOffsetY.__doc__ + '\n' + '* ``PropertyLineClipping``: ' + QgsSymbolLayer.Property.LineClipping.__doc__ + '\n' + '* ``SkipMultiples``: ' + QgsSymbolLayer.Property.SkipMultiples.__doc__ + '\n' + '* ``ShowMarker``: ' + QgsSymbolLayer.Property.ShowMarker.__doc__
# --
QgsMarkerSymbolLayer.Left = QgsMarkerSymbolLayer.HorizontalAnchorPoint.Left
QgsMarkerSymbolLayer.HCenter = QgsMarkerSymbolLayer.HorizontalAnchorPoint.HCenter
Expand Down
15 changes: 15 additions & 0 deletions python/PyQt6/core/auto_generated/qgis.sip.in
Original file line number Diff line number Diff line change
Expand Up @@ -1628,6 +1628,21 @@ The development version
typedef QFlags<Qgis::MarkerLinePlacement> MarkerLinePlacements;


enum class LinearReferencingPlacement /BaseType=IntFlag/
{
IntervalCartesian2D,
IntervalZ,
IntervalM,
Vertex,
};

enum class LinearReferencingLabelSource /BaseType=IntEnum/
{
CartesianDistance2D,
Z,
M,
};

enum class GradientColorSource /BaseType=IntEnum/
{
SimpleTwoColor,
Expand Down
Loading

0 comments on commit 26ab9b9

Please sign in to comment.