Skip to content

Commit 38a66e5

Browse files
committedNov 29, 2017
[processing] Fix Geometries algorithm should only keep results
with the same geometry type as the original features Otherwise it's inserting points into line features when the geometry repair results in a point geometry only
1 parent a3a79b9 commit 38a66e5

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed
 

‎src/analysis/processing/qgsalgorithmfixgeometries.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,16 @@ QgsFeature QgsFixGeometriesAlgorithm::processFeature( const QgsFeature &feature,
100100
}
101101

102102
outputGeometry.convertToMultiType();
103-
outputFeature.setGeometry( outputGeometry );
103+
if ( QgsWkbTypes::geometryType( outputGeometry.wkbType() ) != QgsWkbTypes::geometryType( feature.geometry().wkbType() ) )
104+
{
105+
// don't keep geometries which have different types - e.g. lines converted to points
106+
feedback->pushInfo( QObject::tr( "Fixing geometry for feature %1 resulted in %2, geometry has been dropped." ).arg( feature.id() ).arg( QgsWkbTypes::displayString( outputGeometry.wkbType() ) ) );
107+
outputFeature.clearGeometry();
108+
}
109+
else
110+
{
111+
outputFeature.setGeometry( outputGeometry );
112+
}
104113
return outputFeature;
105114
}
106115

0 commit comments

Comments
 (0)
Please sign in to comment.