QGIS API Documentation 3.41.0-Master (45a0abf3bec)
|
LabelPosition is a candidate feature label position. More...
#include <labelposition.h>
Public Types | |
enum class | LabelDirectionToLine { SameDirection , Reversed } |
Label directions in relation to line or polygon ring directions. More... | |
Public Member Functions | |
LabelPosition (const LabelPosition &other) | |
LabelPosition (int id, double x1, double y1, double w, double h, double alpha, double cost, FeaturePart *feature, LabelDirectionToLine directionToLine=LabelDirectionToLine::SameDirection, Qgis::LabelQuadrantPosition quadrant=Qgis::LabelQuadrantPosition::Over) | |
create a new LabelPosition | |
~LabelPosition () override | |
double | angleDifferential () |
Returns the angle differential of all LabelPosition parts. | |
QgsRectangle | boundingBoxForCandidateConflicts (Pal *pal) const |
Returns the bounding box to use for candidate conflicts. | |
bool | conflictsWithObstacle () const |
Returns whether the position is marked as conflicting with an obstacle feature. | |
double | cost () const |
Returns the candidate label position's geographical cost. | |
bool | crossesBoundary (PointSet *polygon) const |
Returns true if this label crosses the boundary of the specified polygon. | |
bool | crossesLine (PointSet *line) const |
Returns true if this label crosses the specified line. | |
void | decrementNumOverlaps () |
Decreases the number of overlaps recorded against this position by 1. | |
double | getAlpha () const |
Returns the angle to rotate text (in radians). | |
void | getBoundingBox (double amin[2], double amax[2]) const |
Returns bounding box - amin: xmin,ymin - amax: xmax,ymax. | |
double | getDistanceToPoint (double xp, double yp, bool useOuterBounds) const |
Gets distance from this label to a point. | |
FeaturePart * | getFeaturePart () const |
Returns the feature corresponding to this labelposition. | |
double | getHeight () const |
int | getId () const |
Returns the id. | |
int | getNumOverlaps () const |
int | getPartId () const |
int | getProblemFeatureId () const |
bool | getUpsideDown () const |
double | getWidth () const |
double | getX (int i=0) const |
Returns the down-left x coordinate. | |
double | getY (int i=0) const |
Returns the down-left y coordinate. | |
unsigned int | globalId () const |
Returns the global ID for the candidate, which is unique for a single run of the pal labelling engine. | |
bool | hasHardObstacleConflict () const |
Returns whether the position is marked as having a hard conflict with an obstacle feature. | |
void | incrementNumOverlaps () |
Increases the number of overlaps recorded against this position by 1. | |
void | insertIntoIndex (PalRtree< LabelPosition > &index) |
Inserts the label position into the specified index. | |
bool | intersects (const GEOSPreparedGeometry *geometry) |
Returns true if the label position intersects a geometry. | |
bool | intersectsWithPolygon (PointSet *polygon) const |
Returns true if any intersection between polygon and position exists. | |
bool | isInConflict (const LabelPosition *ls) const |
Check whether or not this overlap with another labelPosition. | |
bool | isReversedFromLineDirection () const |
Returns true if the label direction is the reversed from the line or polygon ring direction. | |
const GEOSGeometry * | multiPartGeom () const |
Returns a GEOS representation of all label parts as a multipolygon. | |
LabelPosition * | nextPart () const |
Returns the next part of this label position (i.e. | |
QgsRectangle | outerBoundingBox () const |
Returns bounding box. | |
bool | outerBoundingBoxIntersects (const LabelPosition *other) const |
Returns true if the outer bounding box of this pointset intersects the outer bounding box of another label position. | |
int | polygonIntersectionCost (PointSet *polygon) const |
Returns cost of position intersection with polygon (testing area of intersection and center). | |
const GEOSPreparedGeometry * | preparedMultiPartGeom () const |
Returns a prepared GEOS representation of all label parts as a multipolygon. | |
const GEOSPreparedGeometry * | preparedOuterBoundsGeom () const |
Returns the prepared outer boundary geometry. | |
Qgis::LabelQuadrantPosition | quadrant () const |
Returns the quadrant associated with this label position. | |
void | removeFromIndex (PalRtree< LabelPosition > &index) |
Removes the label position from the specified index. | |
void | resetNumOverlaps () |
void | setConflictsWithObstacle (bool conflicts) |
Sets whether the position is marked as conflicting with an obstacle feature. | |
void | setCost (double newCost) |
Sets the candidate label position's geographical cost. | |
void | setGlobalId (unsigned int id) |
Sets the global id for the candidate, which is unique for a single run of the pal labelling engine. | |
void | setHasHardObstacleConflict (bool conflicts) |
Sets whether the position is marked as having a hard conflict with an obstacle feature. | |
void | setNextPart (std::unique_ptr< LabelPosition > next) |
Sets the next part of this label position (i.e. | |
void | setPartId (int id) |
void | setProblemIds (int probFid, int lpId) |
Set problem feature ID and assigned label candidate ID. | |
void | setUpsideDownCharCount (int count) |
Sets the count of upside down characters for this label position. | |
int | upsideDownCharCount () const |
Returns the number of upside down characters for this label position. | |
void | validateCost () |
Make sure the cost is less than 1. | |
bool | within (const GEOSPreparedGeometry *geometry) |
Returns true if the label position is within a geometry. | |
Public Member Functions inherited from pal::PointSet | |
PointSet () | |
PointSet (int nbPoints, double *x, double *y) | |
virtual | ~PointSet () |
double | area () const |
Returns area of polygon geometry. | |
QgsRectangle | boundingBox () const |
Returns the point set bounding box. | |
bool | boundingBoxIntersects (const PointSet *other) const |
Returns true if the bounding box of this pointset intersects the bounding box of another pointset. | |
std::unique_ptr< PointSet > | clone () const |
Returns a copy of the point set. | |
OrientedConvexHullBoundingBox | computeConvexHullOrientedBoundingBox (bool &ok) const |
Computes an oriented bounding box for the shape's convex hull. | |
bool | containsLabelCandidate (double x, double y, double width, double height, double alpha=0) const |
Tests whether a possible label candidate will fit completely within the shape. | |
bool | containsPoint (double x, double y) const |
Tests whether point set contains a specified point. | |
std::tuple< std::vector< double >, double > | edgeDistances () const |
Returns a vector of edge distances as well as its total length. | |
void | extendLineByDistance (double startDistance, double endDistance, double smoothDistance) |
Extends linestrings by the specified amount at the start and end of the line, by extending the existing lines following the same direction as the original line start or end. | |
std::unique_ptr< PointSet > | extractShape (int nbPtSh, int imin, int imax, int fps, int fpe, double fptx, double fpty) |
Does... something completely inscrutable. | |
const GEOSGeometry * | geos () const |
Returns the point set's GEOS geometry. | |
void | getCentroid (double &px, double &py, bool forceInside=false) const |
int | getGeosType () const |
PointSet * | getHoleOf () const |
Returns nullptr if this isn't a hole. Otherwise returns pointer to parent pointset. | |
int | getNumPoints () const |
void | getPointByDistance (double *d, double *ad, double dl, double *px, double *py) const |
Gets a point a set distance along a line geometry. | |
geos::unique_ptr | interpolatePoint (double distance) const |
Returns a GEOS geometry representing the point interpolated on the shape by distance. | |
bool | isClosed () const |
Returns true if pointset is closed. | |
double | length () const |
Returns length of line geometry. | |
double | lineLocatePoint (const GEOSGeometry *point) const |
Returns the distance along the geometry closest to the specified GEOS point. | |
double | minDistanceToPoint (double px, double py, double *rx=nullptr, double *ry=nullptr) const |
Returns the squared minimum distance between the point set geometry and the point (px,py) Optionally, the nearest point is stored in (rx,ry). | |
void | offsetCurveByDistance (double distance) |
Offsets linestrings by the specified distance. | |
QString | toWkt () const |
Returns a WKT representation of the point set. | |
Protected Attributes | |
double | alpha |
Rotation in radians. | |
FeaturePart * | feature = nullptr |
double | h |
int | id |
int | nbOverlap |
int | partId |
int | probFeat |
bool | upsideDown |
double | w |
Protected Attributes inherited from pal::PointSet | |
std::vector< int > | convexHull |
PointSet * | holeOf = nullptr |
double | mArea = -1 |
GEOSGeometry * | mGeos = nullptr |
double | mLength = -1 |
bool | mOwnsGeom = false |
PointSet * | parent = nullptr |
int | type |
double | xmax = std::numeric_limits<double>::lowest() |
double | xmin = std::numeric_limits<double>::max() |
double | ymax = std::numeric_limits<double>::lowest() |
double | ymin = std::numeric_limits<double>::max() |
Friends | |
class | CostCalculator |
class | PolygonCostCalculator |
Additional Inherited Members | |
Static Public Member Functions inherited from pal::PointSet | |
static QLinkedList< PointSet * > | splitPolygons (PointSet *inputShape, double labelWidth, double labelHeight) |
Split a polygon using some random logic into some other polygons. | |
Public Attributes inherited from pal::PointSet | |
int | nbPoints |
std::vector< double > | x |
std::vector< double > | y |
Protected Member Functions inherited from pal::PointSet | |
PointSet (const PointSet &ps) | |
PointSet (double x, double y) | |
void | createGeosGeom () const |
void | deleteCoords () |
void | invalidateGeos () const |
const GEOSPreparedGeometry * | preparedGeom () const |
LabelPosition is a candidate feature label position.
Definition at line 55 of file labelposition.h.
|
strong |
Label directions in relation to line or polygon ring directions.
Enumerator | |
---|---|
SameDirection | |
Reversed |
Definition at line 65 of file labelposition.h.
LabelPosition::LabelPosition | ( | int | id, |
double | x1, | ||
double | y1, | ||
double | w, | ||
double | h, | ||
double | alpha, | ||
double | cost, | ||
FeaturePart * | feature, | ||
LabelDirectionToLine | directionToLine = LabelDirectionToLine::SameDirection , |
||
Qgis::LabelQuadrantPosition | quadrant = Qgis::LabelQuadrantPosition::Over |
||
) |
create a new LabelPosition
id | id of this labelposition |
x1 | down-left x coordinate |
y1 | down-left y coordinate |
w | label width |
h | label height |
alpha | rotation in radians |
cost | geographic cost |
feature | labelpos owners |
directionToLine | whether the label direction is reversed from the line or polygon ring direction |
quadrant | relative position of label to feature |
Definition at line 44 of file labelposition.cpp.
LabelPosition::LabelPosition | ( | const LabelPosition & | other | ) |
Definition at line 143 of file labelposition.cpp.
|
override |
Definition at line 169 of file labelposition.cpp.
double LabelPosition::angleDifferential | ( | ) |
Returns the angle differential of all LabelPosition parts.
Definition at line 836 of file labelposition.cpp.
QgsRectangle LabelPosition::boundingBoxForCandidateConflicts | ( | Pal * | pal | ) | const |
Returns the bounding box to use for candidate conflicts.
Definition at line 460 of file labelposition.cpp.
|
inline |
Returns whether the position is marked as conflicting with an obstacle feature.
Definition at line 245 of file labelposition.h.
|
inline |
Returns the candidate label position's geographical cost.
Definition at line 224 of file labelposition.h.
bool LabelPosition::crossesBoundary | ( | PointSet * | polygon | ) | const |
Returns true
if this label crosses the boundary of the specified polygon.
Definition at line 703 of file labelposition.cpp.
bool LabelPosition::crossesLine | ( | PointSet * | line | ) | const |
Returns true
if this label crosses the specified line.
Definition at line 672 of file labelposition.cpp.
|
inline |
Decreases the number of overlaps recorded against this position by 1.
Definition at line 205 of file labelposition.h.
double LabelPosition::getAlpha | ( | ) | const |
Returns the angle to rotate text (in radians).
Definition at line 393 of file labelposition.cpp.
void LabelPosition::getBoundingBox | ( | double | amin[2], |
double | amax[2] | ||
) | const |
Returns bounding box - amin: xmin,ymin - amax: xmax,ymax.
Definition at line 411 of file labelposition.cpp.
double LabelPosition::getDistanceToPoint | ( | double | xp, |
double | yp, | ||
bool | useOuterBounds | ||
) | const |
Gets distance from this label to a point.
If point lies inside, returns negative number.
If useOuterBounds is true
then the distance will be calculated to the outer bounds of the label (see QgsLabelFeature::outerBounds()), otherwise it will be calculated to the label's actual rectangle.
Definition at line 571 of file labelposition.cpp.
FeaturePart * LabelPosition::getFeaturePart | ( | ) | const |
Returns the feature corresponding to this labelposition.
Definition at line 406 of file labelposition.cpp.
|
inline |
Definition at line 279 of file labelposition.h.
int LabelPosition::getId | ( | ) | const |
Returns the id.
Definition at line 378 of file labelposition.cpp.
|
inline |
Definition at line 194 of file labelposition.h.
|
inline |
Definition at line 313 of file labelposition.h.
|
inline |
Definition at line 207 of file labelposition.h.
|
inline |
Definition at line 291 of file labelposition.h.
|
inline |
Definition at line 278 of file labelposition.h.
double LabelPosition::getX | ( | int | i = 0 | ) | const |
Returns the down-left x coordinate.
Definition at line 383 of file labelposition.cpp.
double LabelPosition::getY | ( | int | i = 0 | ) | const |
Returns the down-left y coordinate.
Definition at line 388 of file labelposition.cpp.
|
inline |
Returns the global ID for the candidate, which is unique for a single run of the pal labelling engine.
A return value of 0 means that the ID has not been assigned.
Definition at line 369 of file labelposition.h.
|
inline |
Returns whether the position is marked as having a hard conflict with an obstacle feature.
A hard conflict means that the placement should (usually) not be considered, because the candidate conflicts with a obstacle of sufficient weight.
Definition at line 261 of file labelposition.h.
|
inline |
Increases the number of overlaps recorded against this position by 1.
Definition at line 200 of file labelposition.h.
void LabelPosition::insertIntoIndex | ( | PalRtree< LabelPosition > & | index | ) |
Inserts the label position into the specified index.
Definition at line 516 of file labelposition.cpp.
bool LabelPosition::intersects | ( | const GEOSPreparedGeometry * | geometry | ) |
Returns true
if the label position intersects a geometry.
Definition at line 178 of file labelposition.cpp.
bool LabelPosition::intersectsWithPolygon | ( | PointSet * | polygon | ) | const |
Returns true
if any intersection between polygon and position exists.
Definition at line 743 of file labelposition.cpp.
bool LabelPosition::isInConflict | ( | const LabelPosition * | ls | ) | const |
Check whether or not this overlap with another labelPosition.
ls | other labelposition |
true
or false
Definition at line 232 of file labelposition.cpp.
|
inline |
Returns true
if the label direction is the reversed from the line or polygon ring direction.
Definition at line 289 of file labelposition.h.
const GEOSGeometry * LabelPosition::multiPartGeom | ( | ) | const |
Returns a GEOS representation of all label parts as a multipolygon.
Definition at line 521 of file labelposition.cpp.
|
inline |
Returns the next part of this label position (i.e.
the next character for a curved label).
Definition at line 303 of file labelposition.h.
QgsRectangle LabelPosition::outerBoundingBox | ( | ) | const |
Returns bounding box.
Definition at line 452 of file labelposition.cpp.
bool LabelPosition::outerBoundingBoxIntersects | ( | const LabelPosition * | other | ) | const |
Returns true
if the outer bounding box of this pointset intersects the outer bounding box of another label position.
Definition at line 473 of file labelposition.cpp.
int LabelPosition::polygonIntersectionCost | ( | PointSet * | polygon | ) | const |
Returns cost of position intersection with polygon (testing area of intersection and center).
Cost ranges between 0 and 12, with extra cost if center of label position is covered.
Definition at line 735 of file labelposition.cpp.
const GEOSPreparedGeometry * LabelPosition::preparedMultiPartGeom | ( | ) | const |
Returns a prepared GEOS representation of all label parts as a multipolygon.
Definition at line 554 of file labelposition.cpp.
const GEOSPreparedGeometry * LabelPosition::preparedOuterBoundsGeom | ( | ) | const |
Returns the prepared outer boundary geometry.
Definition at line 566 of file labelposition.cpp.
|
inline |
Returns the quadrant associated with this label position.
Definition at line 296 of file labelposition.h.
void LabelPosition::removeFromIndex | ( | PalRtree< LabelPosition > & | index | ) |
Removes the label position from the specified index.
Definition at line 511 of file labelposition.cpp.
|
inline |
Definition at line 195 of file labelposition.h.
void LabelPosition::setConflictsWithObstacle | ( | bool | conflicts | ) |
Sets whether the position is marked as conflicting with an obstacle feature.
conflicts | set to true to mark candidate as being in conflict |
Definition at line 497 of file labelposition.cpp.
|
inline |
Sets the candidate label position's geographical cost.
newCost | new cost for position |
Definition at line 231 of file labelposition.h.
|
inline |
Sets the global id for the candidate, which is unique for a single run of the pal labelling engine.
Definition at line 377 of file labelposition.h.
void LabelPosition::setHasHardObstacleConflict | ( | bool | conflicts | ) |
Sets whether the position is marked as having a hard conflict with an obstacle feature.
A hard conflict means that the placement should (usually) not be considered, because the candidate conflicts with a obstacle of sufficient weight.
Definition at line 504 of file labelposition.cpp.
|
inline |
Sets the next part of this label position (i.e.
the next character for a curved label).
Definition at line 310 of file labelposition.h.
|
inline |
Definition at line 314 of file labelposition.h.
|
inline |
Set problem feature ID and assigned label candidate ID.
called from pal.cpp during extraction.
Definition at line 213 of file labelposition.h.
|
inline |
Sets the count of upside down characters for this label position.
Definition at line 321 of file labelposition.h.
|
inline |
Returns the number of upside down characters for this label position.
Definition at line 328 of file labelposition.h.
void LabelPosition::validateCost | ( | ) |
Make sure the cost is less than 1.
Definition at line 398 of file labelposition.cpp.
bool LabelPosition::within | ( | const GEOSPreparedGeometry * | geometry | ) |
Returns true
if the label position is within a geometry.
Definition at line 205 of file labelposition.cpp.
|
friend |
Definition at line 57 of file labelposition.h.
|
friend |
Definition at line 58 of file labelposition.h.
|
protected |
Rotation in radians.
Definition at line 396 of file labelposition.h.
|
protected |
Definition at line 388 of file labelposition.h.
|
protected |
Definition at line 399 of file labelposition.h.
|
protected |
Definition at line 386 of file labelposition.h.
|
protected |
Definition at line 393 of file labelposition.h.
|
protected |
Definition at line 401 of file labelposition.h.
|
protected |
Definition at line 391 of file labelposition.h.
|
protected |
Definition at line 404 of file labelposition.h.
|
protected |
Definition at line 398 of file labelposition.h.