QGIS API Documentation 3.99.0-Master (357b655ed83)
Loading...
Searching...
No Matches
qgsmeasureutils.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmeasureutils.cpp
3 ----------------------
4 begin : February 2026
5 copyright : (C) 2026 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "qgsmeasureutils.h"
19
20#include "qgis.h"
21#include "qgsproject.h"
22#include "qgssettings.h"
23#include "qgsunittypes.h"
24
25#include <QString>
26
27#include "moc_qgsmeasureutils.cpp"
28
29using namespace Qt::StringLiterals;
30
32{
33 QgsSettings settings;
34 const bool keepBaseUnit = settings.value( u"qgis/measure/keepbaseunit"_s, true ).toBool();
35
36 const Qgis::AreaUnit targetUnit = project->areaUnits();
37 const double areaInTargetUnits = QgsUnitTypes::fromUnitToUnitFactor( unit, targetUnit ) * area;
38
39 int decimals = 3;
40 switch ( targetUnit )
41 {
43 decimals = 6;
44 break;
45
58 break;
59 }
60
61 return QgsUnitTypes::formatArea( areaInTargetUnits, decimals, targetUnit, keepBaseUnit );
62}
63
65{
66 QgsSettings settings;
67 const bool keepBaseUnit = settings.value( u"qgis/measure/keepbaseunit"_s, true ).toBool();
68
69 const Qgis::DistanceUnit targetUnit = project->distanceUnits();
70 const double distanceInTargetUnits = QgsUnitTypes::fromUnitToUnitFactor( unit, targetUnit ) * distance;
71
72 int decimals = 3;
73 switch ( targetUnit )
74 {
76 decimals = 6;
77 break;
78
128 break;
129 }
130
131 return QgsUnitTypes::formatDistance( distanceInTargetUnits, decimals, targetUnit, keepBaseUnit );
132}
DistanceUnit
Units of distance.
Definition qgis.h:5120
@ YardsBritishSears1922Truncated
British yards (Sears 1922 truncated).
Definition qgis.h:5160
@ Feet
Imperial feet.
Definition qgis.h:5123
@ MilesUSSurvey
US Survey miles.
Definition qgis.h:5167
@ LinksBritishSears1922
British links (Sears 1922).
Definition qgis.h:5155
@ YardsBritishBenoit1895A
British yards (Benoit 1895 A).
Definition qgis.h:5158
@ LinksBritishBenoit1895A
British links (Benoit 1895 A).
Definition qgis.h:5152
@ Centimeters
Centimeters.
Definition qgis.h:5128
@ YardsIndian1975
Indian yards (1975).
Definition qgis.h:5166
@ FeetUSSurvey
US Survey feet.
Definition qgis.h:5150
@ Millimeters
Millimeters.
Definition qgis.h:5129
@ FeetBritishSears1922
British feet (Sears 1922).
Definition qgis.h:5143
@ YardsClarkes
Clarke's yards.
Definition qgis.h:5162
@ YardsIndian
Indian yards.
Definition qgis.h:5163
@ FeetBritishBenoit1895B
British feet (Benoit 1895 B).
Definition qgis.h:5141
@ Miles
Terrestrial miles.
Definition qgis.h:5126
@ LinksUSSurvey
US Survey links.
Definition qgis.h:5157
@ Meters
Meters.
Definition qgis.h:5121
@ ChainsUSSurvey
US Survey chains.
Definition qgis.h:5137
@ FeetClarkes
Clarke's feet.
Definition qgis.h:5144
@ Unknown
Unknown distance unit.
Definition qgis.h:5170
@ Yards
Imperial yards.
Definition qgis.h:5125
@ FeetBritish1936
British feet (1936).
Definition qgis.h:5139
@ FeetIndian1962
Indian feet (1962).
Definition qgis.h:5148
@ YardsBritishSears1922
British yards (Sears 1922).
Definition qgis.h:5161
@ FeetIndian1937
Indian feet (1937).
Definition qgis.h:5147
@ YardsIndian1937
Indian yards (1937).
Definition qgis.h:5164
@ Degrees
Degrees, for planar geographic CRS distance measurements.
Definition qgis.h:5127
@ ChainsBritishBenoit1895B
British chains (Benoit 1895 B).
Definition qgis.h:5133
@ LinksBritishSears1922Truncated
British links (Sears 1922 truncated).
Definition qgis.h:5154
@ ChainsBritishBenoit1895A
British chains (Benoit 1895 A).
Definition qgis.h:5132
@ YardsBritishBenoit1895B
British yards (Benoit 1895 B).
Definition qgis.h:5159
@ FeetBritish1865
British feet (1865).
Definition qgis.h:5138
@ YardsIndian1962
Indian yards (1962).
Definition qgis.h:5165
@ FeetBritishSears1922Truncated
British feet (Sears 1922 truncated).
Definition qgis.h:5142
@ MetersGermanLegal
German legal meter.
Definition qgis.h:5169
@ LinksBritishBenoit1895B
British links (Benoit 1895 B).
Definition qgis.h:5153
@ ChainsInternational
International chains.
Definition qgis.h:5131
@ Inches
Inches.
Definition qgis.h:5130
@ Fathoms
Fathoms.
Definition qgis.h:5168
@ LinksInternational
International links.
Definition qgis.h:5151
@ ChainsBritishSears1922Truncated
British chains (Sears 1922 truncated).
Definition qgis.h:5134
@ FeetIndian
Indian (geodetic) feet.
Definition qgis.h:5146
@ NauticalMiles
Nautical miles.
Definition qgis.h:5124
@ ChainsClarkes
Clarke's chains.
Definition qgis.h:5136
@ LinksClarkes
Clarke's links.
Definition qgis.h:5156
@ ChainsBritishSears1922
British chains (Sears 1922).
Definition qgis.h:5135
@ Kilometers
Kilometers.
Definition qgis.h:5122
@ FeetIndian1975
Indian feet (1975).
Definition qgis.h:5149
@ FeetGoldCoast
Gold Coast feet.
Definition qgis.h:5145
@ FeetBritishBenoit1895A
British feet (Benoit 1895 A).
Definition qgis.h:5140
AreaUnit
Units of area.
Definition qgis.h:5197
@ Acres
Acres.
Definition qgis.h:5204
@ SquareFeet
Square feet.
Definition qgis.h:5200
@ SquareCentimeters
Square centimeters.
Definition qgis.h:5207
@ SquareInches
Square inches.
Definition qgis.h:5209
@ SquareNauticalMiles
Square nautical miles.
Definition qgis.h:5205
@ SquareMillimeters
Square millimeters.
Definition qgis.h:5208
@ SquareYards
Square yards.
Definition qgis.h:5201
@ Hectares
Hectares.
Definition qgis.h:5203
@ SquareKilometers
Square kilometers.
Definition qgis.h:5199
@ SquareMeters
Square meters.
Definition qgis.h:5198
@ Unknown
Unknown areal unit.
Definition qgis.h:5210
@ SquareDegrees
Square degrees, for planar geographic CRS area measurements.
Definition qgis.h:5206
@ SquareMiles
Square miles.
Definition qgis.h:5202
static Q_INVOKABLE QString formatAreaForProject(QgsProject *project, double area, Qgis::AreaUnit unit)
Formats an area measurement (with the specified unit) for use with a project, respecting the project'...
static Q_INVOKABLE QString formatDistanceForProject(QgsProject *project, double distance, Qgis::DistanceUnit unit)
Formats a distance measurement (with the specified unit) for use with a project, respecting the proje...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:113
Qgis::DistanceUnit distanceUnits
Definition qgsproject.h:131
Qgis::AreaUnit areaUnits
Definition qgsproject.h:132
Stores settings for use within QGIS.
Definition qgssettings.h:68
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
static Q_INVOKABLE QString formatArea(double area, int decimals, Qgis::AreaUnit unit, bool keepBaseUnit=false)
Returns an area formatted as a friendly string.
static Q_INVOKABLE double fromUnitToUnitFactor(Qgis::DistanceUnit fromUnit, Qgis::DistanceUnit toUnit)
Returns the conversion factor between the specified distance units.
static Q_INVOKABLE QString formatDistance(double distance, int decimals, Qgis::DistanceUnit unit, bool keepBaseUnit=false)
Returns an distance formatted as a friendly string.