@@ -1239,6 +1239,54 @@ void QgsCoordinateReferenceSystem::setMapUnits()
1239
1239
OSRFixup ( d->mCRS );
1240
1240
#endif
1241
1241
1242
+ #if PROJ_VERSION_MAJOR>=6
1243
+ if ( !d->mPj )
1244
+ {
1245
+ d->mMapUnits = QgsUnitTypes::DistanceUnknownUnit;
1246
+ return ;
1247
+ }
1248
+
1249
+ PJ_CONTEXT *context = QgsProjContext::get ();
1250
+ QgsProjUtils::proj_pj_unique_ptr coordinateSystem ( proj_crs_get_coordinate_system ( context, d->mPj .get () ) );
1251
+ if ( !coordinateSystem )
1252
+ {
1253
+ d->mMapUnits = QgsUnitTypes::DistanceUnknownUnit;
1254
+ return ;
1255
+ }
1256
+
1257
+ const int axisCount = proj_cs_get_axis_count ( context, coordinateSystem.get () );
1258
+ if ( axisCount > 0 )
1259
+ {
1260
+ const char *outUnitName = nullptr ;
1261
+ // Read only first axis
1262
+ proj_cs_get_axis_info ( context, coordinateSystem.get (), 0 ,
1263
+ nullptr ,
1264
+ nullptr ,
1265
+ nullptr ,
1266
+ nullptr ,
1267
+ &outUnitName,
1268
+ nullptr ,
1269
+ nullptr );
1270
+
1271
+ const QString unitName ( outUnitName );
1272
+ if ( unitName.compare ( QLatin1String ( " degree" ), Qt::CaseInsensitive ) == 0 )
1273
+ d->mMapUnits = QgsUnitTypes::DistanceDegrees;
1274
+ else if ( unitName.compare ( QLatin1String ( " metre" ), Qt::CaseInsensitive ) == 0 )
1275
+ d->mMapUnits = QgsUnitTypes::DistanceMeters;
1276
+ else if ( unitName.compare ( QLatin1String ( " US survey foot" ), Qt::CaseInsensitive ) == 0 )
1277
+ d->mMapUnits = QgsUnitTypes::DistanceFeet;
1278
+ // TODO - maybe more values to handle here?
1279
+ else
1280
+ d->mMapUnits = QgsUnitTypes::DistanceUnknownUnit;
1281
+ return ;
1282
+ }
1283
+ else
1284
+ {
1285
+ d->mMapUnits = QgsUnitTypes::DistanceUnknownUnit;
1286
+ return ;
1287
+ }
1288
+
1289
+ #else
1242
1290
if ( OSRIsProjected ( d->mCRS ) )
1243
1291
{
1244
1292
double toMeter = OSRGetLinearUnits ( d->mCRS , &unitName );
@@ -1275,6 +1323,7 @@ void QgsCoordinateReferenceSystem::setMapUnits()
1275
1323
d->mMapUnits = QgsUnitTypes::DistanceUnknownUnit;
1276
1324
}
1277
1325
}
1326
+ #endif
1278
1327
}
1279
1328
1280
1329
0 commit comments