QGIS API Documentation 4.1.0-Master (376402f9aeb)
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"
24#include "qgsunittypes.h"
25
26#include <QString>
27
28#include "moc_qgsmeasureutils.cpp"
29
30using namespace Qt::StringLiterals;
31
33{
34 const bool keepBaseUnit = QgsSettingsRegistryCore::settingsMeasureKeepBaseUnit->value();
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 const bool keepBaseUnit = QgsSettingsRegistryCore::settingsMeasureKeepBaseUnit->value();
67
68 const Qgis::DistanceUnit targetUnit = project->distanceUnits();
69 const double distanceInTargetUnits = QgsUnitTypes::fromUnitToUnitFactor( unit, targetUnit ) * distance;
70
71 int decimals = 3;
72 switch ( targetUnit )
73 {
75 decimals = 6;
76 break;
77
127 break;
128 }
129
130 return QgsUnitTypes::formatDistance( distanceInTargetUnits, decimals, targetUnit, keepBaseUnit );
131}
DistanceUnit
Units of distance.
Definition qgis.h:5326
@ YardsBritishSears1922Truncated
British yards (Sears 1922 truncated).
Definition qgis.h:5366
@ Feet
Imperial feet.
Definition qgis.h:5329
@ MilesUSSurvey
US Survey miles.
Definition qgis.h:5373
@ LinksBritishSears1922
British links (Sears 1922).
Definition qgis.h:5361
@ YardsBritishBenoit1895A
British yards (Benoit 1895 A).
Definition qgis.h:5364
@ LinksBritishBenoit1895A
British links (Benoit 1895 A).
Definition qgis.h:5358
@ Centimeters
Centimeters.
Definition qgis.h:5334
@ YardsIndian1975
Indian yards (1975).
Definition qgis.h:5372
@ FeetUSSurvey
US Survey feet.
Definition qgis.h:5356
@ Millimeters
Millimeters.
Definition qgis.h:5335
@ FeetBritishSears1922
British feet (Sears 1922).
Definition qgis.h:5349
@ YardsClarkes
Clarke's yards.
Definition qgis.h:5368
@ YardsIndian
Indian yards.
Definition qgis.h:5369
@ FeetBritishBenoit1895B
British feet (Benoit 1895 B).
Definition qgis.h:5347
@ Miles
Terrestrial miles.
Definition qgis.h:5332
@ LinksUSSurvey
US Survey links.
Definition qgis.h:5363
@ Meters
Meters.
Definition qgis.h:5327
@ ChainsUSSurvey
US Survey chains.
Definition qgis.h:5343
@ FeetClarkes
Clarke's feet.
Definition qgis.h:5350
@ Unknown
Unknown distance unit.
Definition qgis.h:5376
@ Yards
Imperial yards.
Definition qgis.h:5331
@ FeetBritish1936
British feet (1936).
Definition qgis.h:5345
@ FeetIndian1962
Indian feet (1962).
Definition qgis.h:5354
@ YardsBritishSears1922
British yards (Sears 1922).
Definition qgis.h:5367
@ FeetIndian1937
Indian feet (1937).
Definition qgis.h:5353
@ YardsIndian1937
Indian yards (1937).
Definition qgis.h:5370
@ Degrees
Degrees, for planar geographic CRS distance measurements.
Definition qgis.h:5333
@ ChainsBritishBenoit1895B
British chains (Benoit 1895 B).
Definition qgis.h:5339
@ LinksBritishSears1922Truncated
British links (Sears 1922 truncated).
Definition qgis.h:5360
@ ChainsBritishBenoit1895A
British chains (Benoit 1895 A).
Definition qgis.h:5338
@ YardsBritishBenoit1895B
British yards (Benoit 1895 B).
Definition qgis.h:5365
@ FeetBritish1865
British feet (1865).
Definition qgis.h:5344
@ YardsIndian1962
Indian yards (1962).
Definition qgis.h:5371
@ FeetBritishSears1922Truncated
British feet (Sears 1922 truncated).
Definition qgis.h:5348
@ MetersGermanLegal
German legal meter.
Definition qgis.h:5375
@ LinksBritishBenoit1895B
British links (Benoit 1895 B).
Definition qgis.h:5359
@ ChainsInternational
International chains.
Definition qgis.h:5337
@ Inches
Inches.
Definition qgis.h:5336
@ Fathoms
Fathoms.
Definition qgis.h:5374
@ LinksInternational
International links.
Definition qgis.h:5357
@ ChainsBritishSears1922Truncated
British chains (Sears 1922 truncated).
Definition qgis.h:5340
@ FeetIndian
Indian (geodetic) feet.
Definition qgis.h:5352
@ NauticalMiles
Nautical miles.
Definition qgis.h:5330
@ ChainsClarkes
Clarke's chains.
Definition qgis.h:5342
@ LinksClarkes
Clarke's links.
Definition qgis.h:5362
@ ChainsBritishSears1922
British chains (Sears 1922).
Definition qgis.h:5341
@ Kilometers
Kilometers.
Definition qgis.h:5328
@ FeetIndian1975
Indian feet (1975).
Definition qgis.h:5355
@ FeetGoldCoast
Gold Coast feet.
Definition qgis.h:5351
@ FeetBritishBenoit1895A
British feet (Benoit 1895 A).
Definition qgis.h:5346
AreaUnit
Units of area.
Definition qgis.h:5403
@ Acres
Acres.
Definition qgis.h:5410
@ SquareFeet
Square feet.
Definition qgis.h:5406
@ SquareCentimeters
Square centimeters.
Definition qgis.h:5413
@ SquareInches
Square inches.
Definition qgis.h:5415
@ SquareNauticalMiles
Square nautical miles.
Definition qgis.h:5411
@ SquareMillimeters
Square millimeters.
Definition qgis.h:5414
@ SquareYards
Square yards.
Definition qgis.h:5407
@ Hectares
Hectares.
Definition qgis.h:5409
@ SquareKilometers
Square kilometers.
Definition qgis.h:5405
@ SquareMeters
Square meters.
Definition qgis.h:5404
@ Unknown
Unknown areal unit.
Definition qgis.h:5416
@ SquareDegrees
Square degrees, for planar geographic CRS area measurements.
Definition qgis.h:5412
@ SquareMiles
Square miles.
Definition qgis.h:5408
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:114
Qgis::DistanceUnit distanceUnits
Definition qgsproject.h:132
Qgis::AreaUnit areaUnits
Definition qgsproject.h:133
static const QgsSettingsEntryBool * settingsMeasureKeepBaseUnit
Settings entry for whether to keep base measurement units.
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.