QGIS API Documentation 4.1.0-Master (26185ffb827)
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:5416
@ YardsBritishSears1922Truncated
British yards (Sears 1922 truncated).
Definition qgis.h:5456
@ Feet
Imperial feet.
Definition qgis.h:5419
@ MilesUSSurvey
US Survey miles.
Definition qgis.h:5463
@ LinksBritishSears1922
British links (Sears 1922).
Definition qgis.h:5451
@ YardsBritishBenoit1895A
British yards (Benoit 1895 A).
Definition qgis.h:5454
@ LinksBritishBenoit1895A
British links (Benoit 1895 A).
Definition qgis.h:5448
@ Centimeters
Centimeters.
Definition qgis.h:5424
@ YardsIndian1975
Indian yards (1975).
Definition qgis.h:5462
@ FeetUSSurvey
US Survey feet.
Definition qgis.h:5446
@ Millimeters
Millimeters.
Definition qgis.h:5425
@ FeetBritishSears1922
British feet (Sears 1922).
Definition qgis.h:5439
@ YardsClarkes
Clarke's yards.
Definition qgis.h:5458
@ YardsIndian
Indian yards.
Definition qgis.h:5459
@ FeetBritishBenoit1895B
British feet (Benoit 1895 B).
Definition qgis.h:5437
@ Miles
Terrestrial miles.
Definition qgis.h:5422
@ LinksUSSurvey
US Survey links.
Definition qgis.h:5453
@ Meters
Meters.
Definition qgis.h:5417
@ ChainsUSSurvey
US Survey chains.
Definition qgis.h:5433
@ FeetClarkes
Clarke's feet.
Definition qgis.h:5440
@ Unknown
Unknown distance unit.
Definition qgis.h:5466
@ Yards
Imperial yards.
Definition qgis.h:5421
@ FeetBritish1936
British feet (1936).
Definition qgis.h:5435
@ FeetIndian1962
Indian feet (1962).
Definition qgis.h:5444
@ YardsBritishSears1922
British yards (Sears 1922).
Definition qgis.h:5457
@ FeetIndian1937
Indian feet (1937).
Definition qgis.h:5443
@ YardsIndian1937
Indian yards (1937).
Definition qgis.h:5460
@ Degrees
Degrees, for planar geographic CRS distance measurements.
Definition qgis.h:5423
@ ChainsBritishBenoit1895B
British chains (Benoit 1895 B).
Definition qgis.h:5429
@ LinksBritishSears1922Truncated
British links (Sears 1922 truncated).
Definition qgis.h:5450
@ ChainsBritishBenoit1895A
British chains (Benoit 1895 A).
Definition qgis.h:5428
@ YardsBritishBenoit1895B
British yards (Benoit 1895 B).
Definition qgis.h:5455
@ FeetBritish1865
British feet (1865).
Definition qgis.h:5434
@ YardsIndian1962
Indian yards (1962).
Definition qgis.h:5461
@ FeetBritishSears1922Truncated
British feet (Sears 1922 truncated).
Definition qgis.h:5438
@ MetersGermanLegal
German legal meter.
Definition qgis.h:5465
@ LinksBritishBenoit1895B
British links (Benoit 1895 B).
Definition qgis.h:5449
@ ChainsInternational
International chains.
Definition qgis.h:5427
@ Inches
Inches.
Definition qgis.h:5426
@ Fathoms
Fathoms.
Definition qgis.h:5464
@ LinksInternational
International links.
Definition qgis.h:5447
@ ChainsBritishSears1922Truncated
British chains (Sears 1922 truncated).
Definition qgis.h:5430
@ FeetIndian
Indian (geodetic) feet.
Definition qgis.h:5442
@ NauticalMiles
Nautical miles.
Definition qgis.h:5420
@ ChainsClarkes
Clarke's chains.
Definition qgis.h:5432
@ LinksClarkes
Clarke's links.
Definition qgis.h:5452
@ ChainsBritishSears1922
British chains (Sears 1922).
Definition qgis.h:5431
@ Kilometers
Kilometers.
Definition qgis.h:5418
@ FeetIndian1975
Indian feet (1975).
Definition qgis.h:5445
@ FeetGoldCoast
Gold Coast feet.
Definition qgis.h:5441
@ FeetBritishBenoit1895A
British feet (Benoit 1895 A).
Definition qgis.h:5436
AreaUnit
Units of area.
Definition qgis.h:5493
@ Acres
Acres.
Definition qgis.h:5500
@ SquareFeet
Square feet.
Definition qgis.h:5496
@ SquareCentimeters
Square centimeters.
Definition qgis.h:5503
@ SquareInches
Square inches.
Definition qgis.h:5505
@ SquareNauticalMiles
Square nautical miles.
Definition qgis.h:5501
@ SquareMillimeters
Square millimeters.
Definition qgis.h:5504
@ SquareYards
Square yards.
Definition qgis.h:5497
@ Hectares
Hectares.
Definition qgis.h:5499
@ SquareKilometers
Square kilometers.
Definition qgis.h:5495
@ SquareMeters
Square meters.
Definition qgis.h:5494
@ Unknown
Unknown areal unit.
Definition qgis.h:5506
@ SquareDegrees
Square degrees, for planar geographic CRS area measurements.
Definition qgis.h:5502
@ SquareMiles
Square miles.
Definition qgis.h:5498
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.