Skip to content

Commit 583f3d3

Browse files
committedMar 27, 2019
Update/add new ellipsoid unit tests for proj 6
1 parent 545e8bc commit 583f3d3

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed
 

‎src/core/qgsellipsoidutils.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -365,13 +365,13 @@ QList<QgsEllipsoidUtils::EllipsoidDefinition> QgsEllipsoidUtils::definitions()
365365
{
366366
def.parameters.semiMinor = semiMinor;
367367
def.parameters.inverseFlattening = def.parameters.semiMajor / ( def.parameters.semiMajor - def.parameters.semiMinor );
368-
def.parameters.crs = QgsCoordinateReferenceSystem::fromProj4( QStringLiteral( "+proj=longlat +a=%1 +b=%2 +no_defs" ).arg( def.parameters.semiMajor ).arg( def.parameters.semiMinor ) );
368+
def.parameters.crs = QgsCoordinateReferenceSystem::fromProj4( QStringLiteral( "+proj=longlat +a=%1 +b=%2 +no_defs" ).arg( def.parameters.semiMajor, 0, 'g', 17 ).arg( def.parameters.semiMinor, 0, 'g', 17 ) );
369369
}
370370
else
371371
{
372372
def.parameters.inverseFlattening = invFlattening;
373373
def.parameters.semiMinor = def.parameters.semiMajor * ( 1 - def.parameters.inverseFlattening );
374-
def.parameters.crs = QgsCoordinateReferenceSystem::fromProj4( QStringLiteral( "+proj=longlat +a=%1 +rf=%2 +no_defs" ).arg( def.parameters.semiMajor ).arg( def.parameters.inverseFlattening ) );
374+
def.parameters.crs = QgsCoordinateReferenceSystem::fromProj4( QStringLiteral( "+proj=longlat +a=%1 +rf=%2 +no_defs" ).arg( def.parameters.semiMajor, 0, 'g', 17 ).arg( def.parameters.inverseFlattening, 0, 'g', 17 ) );
375375
}
376376
}
377377
else

‎tests/src/python/test_qgsellipsoidutils.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
__revision__ = '$Format:%H$'
1414

1515
import qgis # NOQA
16-
17-
from qgis.core import (QgsEllipsoidUtils)
16+
import math
17+
from qgis.core import (QgsEllipsoidUtils,
18+
QgsProjUtils)
1819
from qgis.testing import start_app, unittest
1920

2021
app = start_app()
@@ -36,17 +37,29 @@ def testParams(self):
3637
self.assertAlmostEqual(params.semiMinor, 6356752.314245179, 5)
3738
self.assertAlmostEqual(params.inverseFlattening, 298.257223563, 5)
3839
self.assertFalse(params.useCustomParameters)
39-
self.assertEqual(params.crs.authid(), 'EPSG:4030')
40+
if QgsProjUtils.projVersionMajor() < 6:
41+
self.assertEqual(params.crs.authid(), 'EPSG:4030')
42+
else:
43+
self.assertEqual(params.crs.toProj4(), '+proj=longlat +a=6378137 +b=6356752.3142451793 +no_defs')
4044

4145
for i in range(2):
4246
params = QgsEllipsoidUtils.ellipsoidParameters("Ganymede2000")
4347
self.assertTrue(params.valid)
44-
self.assertEqual(params.semiMajor, 2632400.0)
45-
self.assertEqual(params.semiMinor, 2632350.0)
46-
self.assertEqual(params.inverseFlattening, 52648.0)
48+
self.assertEqual(params.semiMajor, 2632400.0 if QgsProjUtils.projVersionMajor() < 6 else 2632345.0)
49+
self.assertEqual(params.semiMinor, 2632350.0 if QgsProjUtils.projVersionMajor() < 6 else 2632345.0)
50+
self.assertEqual(params.inverseFlattening, 52648.0 if QgsProjUtils.projVersionMajor() < 6 else math.inf)
4751
self.assertFalse(params.useCustomParameters)
4852
self.assertEqual(params.crs.authid(), '')
4953

54+
if QgsProjUtils.projVersionMajor() >= 6:
55+
params = QgsEllipsoidUtils.ellipsoidParameters("ESRI:107916")
56+
self.assertTrue(params.valid)
57+
self.assertEqual(params.semiMajor, 2632400.0 if QgsProjUtils.projVersionMajor() < 6 else 2632345.0)
58+
self.assertEqual(params.semiMinor, 2632350.0 if QgsProjUtils.projVersionMajor() < 6 else 2632345.0)
59+
self.assertEqual(params.inverseFlattening, 52648.0 if QgsProjUtils.projVersionMajor() < 6 else math.inf)
60+
self.assertFalse(params.useCustomParameters)
61+
self.assertEqual(params.crs.authid(), '')
62+
5063
# using parameters
5164
for i in range(2):
5265
params = QgsEllipsoidUtils.ellipsoidParameters("PARAMETER:2631400:2341350")
@@ -63,19 +76,20 @@ def testParams(self):
6376
self.assertFalse(params.valid)
6477

6578
def testAcronyms(self):
66-
self.assertTrue('WGS84' in QgsEllipsoidUtils.acronyms())
67-
self.assertTrue('Ganymede2000' in QgsEllipsoidUtils.acronyms())
79+
self.assertTrue('WGS84' if QgsProjUtils.projVersionMajor() < 6 else 'EPSG:7030' in QgsEllipsoidUtils.acronyms())
80+
self.assertTrue('Ganymede2000' if QgsProjUtils.projVersionMajor() < 6 else 'ESRI:107916' in QgsEllipsoidUtils.acronyms())
6881

6982
def testDefinitions(self):
7083
defs = QgsEllipsoidUtils.definitions()
7184

72-
gany_defs = [d for d in defs if d.acronym == 'Ganymede2000'][0]
73-
self.assertEqual(gany_defs.acronym, 'Ganymede2000')
74-
self.assertEqual(gany_defs.description, 'Ganymede2000')
85+
gany_id = 'Ganymede2000' if QgsProjUtils.projVersionMajor() < 6 else 'ESRI:107916'
86+
gany_defs = [d for d in defs if d.acronym == gany_id][0]
87+
self.assertEqual(gany_defs.acronym, gany_id)
88+
self.assertEqual(gany_defs.description, 'Ganymede2000' if QgsProjUtils.projVersionMajor() < 6 else 'Ganymede 2000 IAU IAG (ESRI:107916)')
7589
self.assertTrue(gany_defs.parameters.valid)
76-
self.assertEqual(gany_defs.parameters.semiMajor, 2632400.0)
77-
self.assertEqual(gany_defs.parameters.semiMinor, 2632350.0)
78-
self.assertEqual(gany_defs.parameters.inverseFlattening, 52648.0)
90+
self.assertEqual(gany_defs.parameters.semiMajor, 2632400.0 if QgsProjUtils.projVersionMajor() < 6 else 2632345.0)
91+
self.assertEqual(gany_defs.parameters.semiMinor, 2632350.0 if QgsProjUtils.projVersionMajor() < 6 else 2632345.0)
92+
self.assertEqual(gany_defs.parameters.inverseFlattening, 52648.0 if QgsProjUtils.projVersionMajor() < 6 else math.inf)
7993
self.assertFalse(gany_defs.parameters.useCustomParameters)
8094
self.assertEqual(gany_defs.parameters.crs.authid(), '')
8195

0 commit comments

Comments
 (0)
Please sign in to comment.