Skip to content

Commit

Permalink
Fix errors and inconsistencies resulting from adding M values to a da…
Browse files Browse the repository at this point in the history
…taset with a ****25D wkb type
  • Loading branch information
github-actions[bot] authored and nyalldawson committed Nov 20, 2020
1 parent f340a33 commit 4447d78
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 14 deletions.
19 changes: 12 additions & 7 deletions src/core/geometry/qgswkbtypes.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -1169,13 +1169,18 @@ class CORE_EXPORT QgsWkbTypes
return Unknown; return Unknown;
else if ( type == NoGeometry ) else if ( type == NoGeometry )
return NoGeometry; return NoGeometry;
else if ( type == Point25D || else if ( type == Point25D )
type == LineString25D || return PointZM;
type == Polygon25D || else if ( type == LineString25D )
type == MultiPoint25D || return LineStringZM;
type == MultiLineString25D || else if ( type == Polygon25D )
type == MultiPolygon25D ) return PolygonZM;
return type; //can't add M dimension to these types else if ( type == MultiPoint25D )
return MultiPointZM;
else if ( type == MultiLineString25D )
return MultiLineStringZM;
else if ( type == MultiPolygon25D )
return MultiPolygonZM;


//upgrade with m dimension //upgrade with m dimension
Type flat = flatType( type ); Type flat = flatType( type );
Expand Down
14 changes: 7 additions & 7 deletions tests/src/python/test_qgsgeometry.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -3894,13 +3894,13 @@ def testWkbTypes(self):
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiSurfaceM), QgsWkbTypes.MultiSurfaceM) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiSurfaceM), QgsWkbTypes.MultiSurfaceM)
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiSurfaceZM), QgsWkbTypes.MultiSurfaceZM) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiSurfaceZM), QgsWkbTypes.MultiSurfaceZM)
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.NoGeometry), QgsWkbTypes.NoGeometry) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.NoGeometry), QgsWkbTypes.NoGeometry)
# can't be added to these types # we force upgrade 25D types to "Z" before adding the M value
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.Point25D), QgsWkbTypes.Point25D) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.Point25D), QgsWkbTypes.PointZM)
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.LineString25D), QgsWkbTypes.LineString25D) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.LineString25D), QgsWkbTypes.LineStringZM)
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.Polygon25D), QgsWkbTypes.Polygon25D) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.Polygon25D), QgsWkbTypes.PolygonZM)
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiPoint25D), QgsWkbTypes.MultiPoint25D) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiPoint25D), QgsWkbTypes.MultiPointZM)
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiLineString25D), QgsWkbTypes.MultiLineString25D) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiLineString25D), QgsWkbTypes.MultiLineStringZM)
self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiPolygon25D), QgsWkbTypes.MultiPolygon25D) self.assertEqual(QgsWkbTypes.addM(QgsWkbTypes.MultiPolygon25D), QgsWkbTypes.MultiPolygonZM)


# test dropping z dimension from types # test dropping z dimension from types
self.assertEqual(QgsWkbTypes.dropZ(QgsWkbTypes.Unknown), QgsWkbTypes.Unknown) self.assertEqual(QgsWkbTypes.dropZ(QgsWkbTypes.Unknown), QgsWkbTypes.Unknown)
Expand Down

0 comments on commit 4447d78

Please sign in to comment.