Skip to content

Commit 33977d1

Browse files
committed
[processing] add option to force singlepart geometry type to postgis import (fix #14889)
1 parent 5fc17dd commit 33977d1

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

python/plugins/processing/algs/qgis/ImportIntoPostGIS.py

+6
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class ImportIntoPostGIS(GeoAlgorithm):
5050
GEOMETRY_COLUMN = 'GEOMETRY_COLUMN'
5151
LOWERCASE_NAMES = 'LOWERCASE_NAMES'
5252
DROP_STRING_LENGTH = 'DROP_STRING_LENGTH'
53+
FORCE_SINGLEPART = 'FORCE_SINGLEPART'
5354
PRIMARY_KEY = 'PRIMARY_KEY'
5455
ENCODING = 'ENCODING'
5556

@@ -81,6 +82,8 @@ def defineCharacteristics(self):
8182
self.tr('Convert field names to lowercase'), True))
8283
self.addParameter(ParameterBoolean(self.DROP_STRING_LENGTH,
8384
self.tr('Drop length constraints on character fields'), False))
85+
self.addParameter(ParameterBoolean(self.FORCE_SINGLEPART,
86+
self.tr('Create single-part geometries instead of multi-part'), False))
8487

8588
def processAlgorithm(self, progress):
8689
connection = self.DB_CONNECTIONS[self.getParameterValue(self.DATABASE)]
@@ -89,6 +92,7 @@ def processAlgorithm(self, progress):
8992
createIndex = self.getParameterValue(self.CREATEINDEX)
9093
convertLowerCase = self.getParameterValue(self.LOWERCASE_NAMES)
9194
dropStringLength = self.getParameterValue(self.DROP_STRING_LENGTH)
95+
forceSinglePart = self.getParameterValue(self.FORCE_SINGLEPART)
9296
primaryKeyField = self.getParameterValue(self.PRIMARY_KEY)
9397
encoding = self.getParameterValue(self.ENCODING)
9498
settings = QSettings()
@@ -131,6 +135,8 @@ def processAlgorithm(self, progress):
131135
geomColumn = geomColumn.lower()
132136
if dropStringLength:
133137
options['dropStringConstraints'] = True
138+
if forceSinglePart:
139+
options['forceSinglePartGeometryType'] = True
134140

135141
# Clear geometry column for non-geometry tables
136142
if not layer.hasGeometryType():

0 commit comments

Comments
 (0)