Navigation Menu

Skip to content

Commit

Permalink
Restore previous version of dissolve function (previous changes shoul…
Browse files Browse the repository at this point in the history
…d not have been commited yet.

git-svn-id: http://svn.osgeo.org/qgis/trunk@13315 c8812cc2-4d05-0410-92ff-de0c093fc19c
  • Loading branch information
cfarmer committed Apr 15, 2010
1 parent 21a8a9e commit ed9fd12
Showing 1 changed file with 65 additions and 51 deletions.
116 changes: 65 additions & 51 deletions python/plugins/fTools/tools/doGeoprocessing.py
Expand Up @@ -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()
Expand All @@ -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 )
Expand All @@ -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()
Expand All @@ -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

Expand Down

0 comments on commit ed9fd12

Please sign in to comment.