@@ -989,7 +989,7 @@ QString QgsDistanceArea::textUnit( double value, int decimals, QGis::UnitType u,
989
989
990
990
void QgsDistanceArea::convertMeasurement ( double &measure, QGis::UnitType &measureUnits, QGis::UnitType displayUnits, bool isArea )
991
991
{
992
- // Helper for converting between meters and feet
992
+ // Helper for converting between meters and feet and degrees and NauticalMiles...
993
993
// The parameters measure and measureUnits are in/out
994
994
995
995
if (( measureUnits == QGis::Degrees || measureUnits == QGis::Feet || measureUnits == QGis::NauticalMiles ) &&
@@ -1001,73 +1001,12 @@ void QgsDistanceArea::convertMeasurement( double &measure, QGis::UnitType &measu
1001
1001
QgsDebugMsg ( " We're measuring on an ellipsoid or using projections, the system is returning meters" );
1002
1002
}
1003
1003
1004
- // Only convert between meters and feet
1005
- if ( measureUnits == QGis::Meters && displayUnits == QGis::Feet )
1006
- {
1007
- QgsDebugMsg ( QString ( " Converting %1 meters" ).arg ( QString::number ( measure ) ) );
1008
- measure /= 0.3048 ;
1009
- if ( isArea )
1010
- {
1011
- measure /= 0.3048 ;
1012
- }
1013
- QgsDebugMsg ( QString ( " to %1 feet" ).arg ( QString::number ( measure ) ) );
1014
- measureUnits = QGis::Feet;
1015
- }
1016
- if ( measureUnits == QGis::Feet && displayUnits == QGis::Meters )
1017
- {
1018
- QgsDebugMsg ( QString ( " Converting %1 feet" ).arg ( QString::number ( measure ) ) );
1019
- measure *= 0.3048 ;
1020
- if ( isArea )
1021
- {
1022
- measure *= 0.3048 ;
1023
- }
1024
- QgsDebugMsg ( QString ( " to %1 meters" ).arg ( QString::number ( measure ) ) );
1025
- measureUnits = QGis::Meters;
1026
- }
1004
+ // Gets the conversion factor between the specified units
1005
+ double factorUnits = QGis::fromUnitToUnitFactor ( measureUnits, displayUnits );
1006
+ if ( isArea ) factorUnits *= factorUnits;
1027
1007
1028
- if ( measureUnits == QGis::Meters && displayUnits == QGis::NauticalMiles )
1029
- {
1030
- QgsDebugMsg ( QString ( " Converting %1 meters" ).arg ( QString::number ( measure ) ) );
1031
- measure /= 1852.0 ;
1032
- if ( isArea )
1033
- {
1034
- measure /= 1852.0 ;
1035
- }
1036
- QgsDebugMsg ( QString ( " to %1 nautical miles" ).arg ( QString::number ( measure ) ) );
1037
- measureUnits = QGis::NauticalMiles;
1038
- }
1039
- if ( measureUnits == QGis::NauticalMiles && displayUnits == QGis::Meters )
1040
- {
1041
- QgsDebugMsg ( QString ( " Converting %1 nautical miles" ).arg ( QString::number ( measure ) ) );
1042
- measure *= 1852.0 ;
1043
- if ( isArea )
1044
- {
1045
- measure *= 1852.0 ;
1046
- }
1047
- QgsDebugMsg ( QString ( " to %1 meters" ).arg ( QString::number ( measure ) ) );
1048
- measureUnits = QGis::Meters;
1049
- }
1050
-
1051
- if ( measureUnits == QGis::Feet && displayUnits == QGis::NauticalMiles )
1052
- {
1053
- QgsDebugMsg ( QString ( " Converting %1 meters" ).arg ( QString::number ( measure ) ) );
1054
- measure /= 6076.12 ;
1055
- if ( isArea )
1056
- {
1057
- measure /= 6076.12 ;
1058
- }
1059
- QgsDebugMsg ( QString ( " to %1 nautical miles" ).arg ( QString::number ( measure ) ) );
1060
- measureUnits = QGis::Feet;
1061
- }
1062
- if ( measureUnits == QGis::NauticalMiles && displayUnits == QGis::Feet )
1063
- {
1064
- QgsDebugMsg ( QString ( " Converting %1 nautical miles" ).arg ( QString::number ( measure ) ) );
1065
- measure *= 6076.12 ;
1066
- if ( isArea )
1067
- {
1068
- measure *= 6076.12 ;
1069
- }
1070
- QgsDebugMsg ( QString ( " to %1 meters" ).arg ( QString::number ( measure ) ) );
1071
- measureUnits = QGis::Feet;
1072
- }
1008
+ QgsDebugMsg ( QString ( " Converting %1 %2" ).arg ( QString::number ( measure ), QGis::toLiteral ( measureUnits ) ) );
1009
+ measure *= factorUnits;
1010
+ QgsDebugMsg ( QString ( " to %1 %2" ).arg ( QString::number ( measure ), QGis::toLiteral ( displayUnits ) ) );
1011
+ measureUnits = displayUnits;
1073
1012
}
0 commit comments