QGIS API Documentation 3.99.0-Master (c22de0620c0)
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:5135
@ YardsBritishSears1922Truncated
British yards (Sears 1922 truncated).
Definition qgis.h:5175
@ Feet
Imperial feet.
Definition qgis.h:5138
@ MilesUSSurvey
US Survey miles.
Definition qgis.h:5182
@ LinksBritishSears1922
British links (Sears 1922).
Definition qgis.h:5170
@ YardsBritishBenoit1895A
British yards (Benoit 1895 A).
Definition qgis.h:5173
@ LinksBritishBenoit1895A
British links (Benoit 1895 A).
Definition qgis.h:5167
@ Centimeters
Centimeters.
Definition qgis.h:5143
@ YardsIndian1975
Indian yards (1975).
Definition qgis.h:5181
@ FeetUSSurvey
US Survey feet.
Definition qgis.h:5165
@ Millimeters
Millimeters.
Definition qgis.h:5144
@ FeetBritishSears1922
British feet (Sears 1922).
Definition qgis.h:5158
@ YardsClarkes
Clarke's yards.
Definition qgis.h:5177
@ YardsIndian
Indian yards.
Definition qgis.h:5178
@ FeetBritishBenoit1895B
British feet (Benoit 1895 B).
Definition qgis.h:5156
@ Miles
Terrestrial miles.
Definition qgis.h:5141
@ LinksUSSurvey
US Survey links.
Definition qgis.h:5172
@ Meters
Meters.
Definition qgis.h:5136
@ ChainsUSSurvey
US Survey chains.
Definition qgis.h:5152
@ FeetClarkes
Clarke's feet.
Definition qgis.h:5159
@ Unknown
Unknown distance unit.
Definition qgis.h:5185
@ Yards
Imperial yards.
Definition qgis.h:5140
@ FeetBritish1936
British feet (1936).
Definition qgis.h:5154
@ FeetIndian1962
Indian feet (1962).
Definition qgis.h:5163
@ YardsBritishSears1922
British yards (Sears 1922).
Definition qgis.h:5176
@ FeetIndian1937
Indian feet (1937).
Definition qgis.h:5162
@ YardsIndian1937
Indian yards (1937).
Definition qgis.h:5179
@ Degrees
Degrees, for planar geographic CRS distance measurements.
Definition qgis.h:5142
@ ChainsBritishBenoit1895B
British chains (Benoit 1895 B).
Definition qgis.h:5148
@ LinksBritishSears1922Truncated
British links (Sears 1922 truncated).
Definition qgis.h:5169
@ ChainsBritishBenoit1895A
British chains (Benoit 1895 A).
Definition qgis.h:5147
@ YardsBritishBenoit1895B
British yards (Benoit 1895 B).
Definition qgis.h:5174
@ FeetBritish1865
British feet (1865).
Definition qgis.h:5153
@ YardsIndian1962
Indian yards (1962).
Definition qgis.h:5180
@ FeetBritishSears1922Truncated
British feet (Sears 1922 truncated).
Definition qgis.h:5157
@ MetersGermanLegal
German legal meter.
Definition qgis.h:5184
@ LinksBritishBenoit1895B
British links (Benoit 1895 B).
Definition qgis.h:5168
@ ChainsInternational
International chains.
Definition qgis.h:5146
@ Inches
Inches.
Definition qgis.h:5145
@ Fathoms
Fathoms.
Definition qgis.h:5183
@ LinksInternational
International links.
Definition qgis.h:5166
@ ChainsBritishSears1922Truncated
British chains (Sears 1922 truncated).
Definition qgis.h:5149
@ FeetIndian
Indian (geodetic) feet.
Definition qgis.h:5161
@ NauticalMiles
Nautical miles.
Definition qgis.h:5139
@ ChainsClarkes
Clarke's chains.
Definition qgis.h:5151
@ LinksClarkes
Clarke's links.
Definition qgis.h:5171
@ ChainsBritishSears1922
British chains (Sears 1922).
Definition qgis.h:5150
@ Kilometers
Kilometers.
Definition qgis.h:5137
@ FeetIndian1975
Indian feet (1975).
Definition qgis.h:5164
@ FeetGoldCoast
Gold Coast feet.
Definition qgis.h:5160
@ FeetBritishBenoit1895A
British feet (Benoit 1895 A).
Definition qgis.h:5155
AreaUnit
Units of area.
Definition qgis.h:5212
@ Acres
Acres.
Definition qgis.h:5219
@ SquareFeet
Square feet.
Definition qgis.h:5215
@ SquareCentimeters
Square centimeters.
Definition qgis.h:5222
@ SquareInches
Square inches.
Definition qgis.h:5224
@ SquareNauticalMiles
Square nautical miles.
Definition qgis.h:5220
@ SquareMillimeters
Square millimeters.
Definition qgis.h:5223
@ SquareYards
Square yards.
Definition qgis.h:5216
@ Hectares
Hectares.
Definition qgis.h:5218
@ SquareKilometers
Square kilometers.
Definition qgis.h:5214
@ SquareMeters
Square meters.
Definition qgis.h:5213
@ Unknown
Unknown areal unit.
Definition qgis.h:5225
@ SquareDegrees
Square degrees, for planar geographic CRS area measurements.
Definition qgis.h:5221
@ SquareMiles
Square miles.
Definition qgis.h:5217
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.