Skip to content

Commit c20f38b

Browse files
committedJan 14, 2014
#9060: use QGis::fromUnitToUnitFactor in QgsDistanceArea
in
1 parent 5d59d83 commit c20f38b

File tree

1 file changed

+8
-69
lines changed

1 file changed

+8
-69
lines changed
 

‎src/core/qgsdistancearea.cpp

Lines changed: 8 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,7 @@ QString QgsDistanceArea::textUnit( double value, int decimals, QGis::UnitType u,
989989

990990
void QgsDistanceArea::convertMeasurement( double &measure, QGis::UnitType &measureUnits, QGis::UnitType displayUnits, bool isArea )
991991
{
992-
// Helper for converting between meters and feet
992+
// Helper for converting between meters and feet and degrees and NauticalMiles...
993993
// The parameters measure and measureUnits are in/out
994994

995995
if (( measureUnits == QGis::Degrees || measureUnits == QGis::Feet || measureUnits == QGis::NauticalMiles ) &&
@@ -1001,73 +1001,12 @@ void QgsDistanceArea::convertMeasurement( double &measure, QGis::UnitType &measu
10011001
QgsDebugMsg( "We're measuring on an ellipsoid or using projections, the system is returning meters" );
10021002
}
10031003

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;
10271007

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;
10731012
}

0 commit comments

Comments
 (0)
Please sign in to comment.