Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
remove M if provider does not have + relative test
  • Loading branch information
luipir committed Sep 26, 2017
1 parent a7e704e commit 6cd38fe
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/core/qgsvectordataprovider.cpp
Expand Up @@ -724,6 +724,16 @@ QgsGeometry* QgsVectorDataProvider::convertToProviderType( const QgsGeometry* ge
outputGeom->dropZValue();
}

// remove M if provider does not have
if ( !QgsWKBTypes::hasM( providerGeomType ) && QgsWKBTypes::hasM( geometry->wkbType() ) )
{
if ( !outputGeom )
{
outputGeom = geometry->clone();
}
outputGeom->dropMValue();
}

if ( outputGeom )
{
return new QgsGeometry( outputGeom );
Expand Down
12 changes: 12 additions & 0 deletions tests/src/python/test_qgsvectorlayereditbuffer.py
Expand Up @@ -150,6 +150,18 @@ def testAddFeatures(self):
f1.setAttributes(["test", 123])
self.assertFalse((layer.editBuffer().addFeatures([f1])))

# check is possibile to adapt M geom to NOT M provider type
layer = createEmptyLayer()
self.assertTrue(layer.startEditing())
self.assertEqual(layer.editBuffer().addedFeatures(), {})
geom = QgsGeometry.fromPoint(QgsPoint(1, 1))
geom.geometry().addMValue(1)
self.assertTrue(QgsWKBTypes.hasM(geom.geometry().wkbType()))
f1 = QgsFeature(layer.fields(), 1)
f1.setGeometry(geom)
f1.setAttributes(["test", 123])
self.assertTrue((layer.editBuffer().addFeatures([f1])))

def testAddMultipleFeatures(self):
# test adding multiple features to an edit buffer
layer = createEmptyLayer()
Expand Down

0 comments on commit 6cd38fe

Please sign in to comment.