Skip to content
Permalink
Browse files

Restore previous version of dissolve function (previous changes shoul…

…d not have been commited yet.

git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@13315 c8812cc2-4d05-0410-92ff-de0c093fc19c
  • Loading branch information
cfarmer
cfarmer committed Apr 15, 2010
1 parent 91bc447 commit 43d89d98767e8ec26363ef6404b1ca21b10a7536
Showing with 65 additions and 51 deletions.
  1. +65 −51 python/plugins/fTools/tools/doGeoprocessing.py
@@ -542,14 +542,12 @@ def dissolve( self, useField ):
vproviderA = self.vlayerA.dataProvider()
allAttrsA = vproviderA.attributeIndexes()
fields = vproviderA.fields()
writer = QgsVectorFileWriter( self.myName, self.myEncoding,
writer = QgsVectorFileWriter( self.myName, self.myEncoding,
fields, vproviderA.geometryType(), vproviderA.crs() )
inFeat = QgsFeature()
outFeat = QgsFeature()
vproviderA.rewind()
nElement = 0
inGeom = QgsGeometry()
geoms = []
# there is selection in input layer
if self.mySelectionA:
nFeat = self.vlayerA.selectedFeatureCount()
@@ -559,21 +557,24 @@ def dissolve( self, useField ):
self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
first = True
for inFeat in selectionA:
nElement += 0.5
nElement += 1
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
if first:
attrs = inFeat.attributeMap()
inGeom = QgsGeometry( inFeat.geometry() )
tmpInGeom = QgsGeometry( inFeat.geometry() )
outFeat.setGeometry( tmpInGeom )
first = False
else:
tmp_geom = QgsGeometry( inFeat.geometry() )
geoms.append(tmp_geom)
outGeom = QgsGeometry(inGeom.combineCascaded(geoms))
nElement += nFeat/2
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
outFeat.setGeometry(outGeom)
outFeat.setAttributeMap(attrs)
writer.addFeature(outFeat)
tmpInGeom = QgsGeometry( inFeat.geometry() )
tmpOutGeom = QgsGeometry( outFeat.geometry() )
try:
tmpOutGeom = QgsGeometry( tmpOutGeom.combine( tmpInGeom ) )
outFeat.setGeometry( tmpOutGeom )
except:
GEOS_EXCEPT = False
continue
outFeat.setAttributeMap( attrs )
writer.addFeature( outFeat )
else:
unique = vproviderA.uniqueValues( int( self.myParam ) )
nFeat = nFeat * len( unique )
@@ -584,25 +585,31 @@ def dissolve( self, useField ):
add = False
vproviderA.select( allAttrsA )
vproviderA.rewind()
filtered = [feat for feat in selectionA if feat.attributeMap()[
self.myParam].toString().trimmed() == item.toString().trimmed()]
for inFeat in filtered:
nElement += 0.5
for inFeat in selectionA:
nElement += 1
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
atMap = inFeat.attributeMap()
if first:
inGeom = QgsGeometry( inFeat.geometry() )
first = False
attrs = inFeat.attributeMap()
else:
tmp_geom = QgsGeometry( inFeat.geometry() )
geoms.append(tmp_geom)
outGeom = QgsGeometry(inGeom.combineCascaded(geoms))
nElement += nFeat/2
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
outFeat.setGeometry(outGeom)
outFeat.setAttributeMap(attrs)
writer.addFeature(outFeat)
tempItem = atMap[ self.myParam ]
if tempItem.toString().trimmed() == item.toString().trimmed():
add = True
if first:
QgsGeometry( inFeat.geometry() )
tmpInGeom = QgsGeometry( inFeat.geometry() )
outFeat.setGeometry( tmpInGeom )
first = False
attrs = inFeat.attributeMap()
else:
tmpInGeom = QgsGeometry( inFeat.geometry() )
tmpOutGeom = QgsGeometry( outFeat.geometry() )
try:
tmpOutGeom = QgsGeometry( tmpOutGeom.combine( tmpInGeom ) )
outFeat.setGeometry( tmpOutGeom )
except:
GEOS_EXCEPT = False
add = False
if add:
outFeat.setAttributeMap( attrs )
writer.addFeature( outFeat )
# there is no selection in input layer
else:
nFeat = vproviderA.featureCount()
@@ -611,51 +618,58 @@ def dissolve( self, useField ):
self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
first = True
while vproviderA.nextFeature( inFeat ):
nElement += 0.5
nElement += 1
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
if first:
attrs = inFeat.attributeMap()
inGeom = QgsGeometry( inFeat.geometry() )
tmpInGeom = QgsGeometry( inFeat.geometry() )
outFeat.setGeometry( tmpInGeom )
first = False
else:
tmp_geom = QgsGeometry( inFeat.geometry() )
geoms.append(tmp_geom)
outGeom = QgsGeometry(inGeom.combineCascaded(geoms))
nElement += nFeat/2
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
outFeat.setGeometry(outGeom)
outFeat.setAttributeMap(attrs)
writer.addFeature(outFeat)
tmpInGeom = QgsGeometry( inFeat.geometry() )
tmpOutGeom = QgsGeometry( outFeat.geometry() )
try:
tmpOutGeom = QgsGeometry( tmpOutGeom.combine( tmpInGeom ) )
outFeat.setGeometry( tmpOutGeom )
except:
GEOS_EXCEPT = False
continue
outFeat.setAttributeMap( attrs )
writer.addFeature( outFeat )
else:
unique = vproviderA.uniqueValues( int( self.myParam ) )
nFeat = nFeat * len( unique )
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), 0)
self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
for item in unique:
geoms = []
first = True
add = True
vproviderA.select( allAttrsA )
vproviderA.rewind()
while vproviderA.nextFeature( inFeat ):
nElement += 0.5
nElement += 1
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
atMap = inFeat.attributeMap()
tempItem = atMap[ self.myParam ]
if tempItem.toString().trimmed() == item.toString().trimmed():
if first:
inGeom = QgsGeometry( inFeat.geometry() )
QgsGeometry( inFeat.geometry() )
tmpInGeom = QgsGeometry( inFeat.geometry() )
outFeat.setGeometry( tmpInGeom )
first = False
attrs = inFeat.attributeMap()
else:
tmp_geom = QgsGeometry( inFeat.geometry() )
geoms.append(tmp_geoms)
outGeom = QgsGeometry(inGeom.combineCascaded(geoms))
nElement += nFeat/2
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
outFeat.setGeometry(outGeom)
outFeat.setAttributeMap(attrs)
writer.addFeature(outFeat)
tmpInGeom = QgsGeometry( inFeat.geometry() )
tmpOutGeom = QgsGeometry( outFeat.geometry() )
try:
tmpOutGeom = QgsGeometry( tmpOutGeom.combine( tmpInGeom ) )
outFeat.setGeometry( tmpOutGeom )
except:
GEOS_EXCEPT = False
add = False
if add:
outFeat.setAttributeMap( attrs )
writer.addFeature( outFeat )
del writer
return GEOS_EXCEPT, FEATURE_EXCEPT, True

0 comments on commit 43d89d9

Please sign in to comment.
You can’t perform that action at this time.